Angular —— Ng Serve Proxy让Ng Serve和你的服务器共存

news2024/9/22 13:11:30

ng serveangular-cli的一个命令,用于在本地开发中启动一个测试服务器,自动编译和重新加载你的项目,并且在编译过程中,它会检查你代码中的一些错误,在控制台中提示你。

但是在实际项目,各个项目几乎必然会使用自己的服务器,为了在调试时能使ng serve和项目服务器并存,我们需要使用ng serve提供的代理服务器(Angular Serve Proxy)

代理服务器主要是解决跨域问题。

想要使用代理服务器, 需要先配置proxy.conf.json文件.

打开或新建一个angular项目,在项目的根目录下新建一个proxy.conf.json文件

写上这些配置

{
    "/api": {
        "target": "http://localhost:8080",
        "secure": false,
        "changeOrigin": true,
        "logLevel": "debug"
    },
    "/method": {
        "target": "http://localhost:9090",
        "secure": false,
        "changeOrigin": true,
        "logLevel": "debug"
    }
}

“/api” 指的是匹配路径 /api开头的请求都会被转换为target目标的地址,比如http://localhost:4200/api/users会被转换成 http://localhost:8080/api/users

target: 指定要转发请求的目标URL

secure指定是否启用安全的HTTP协议(HTTPS), false时,允许不是https和安全证书无效的服务

changeOrigin: 非本地域, 当你的target地址不在本地域也就是不是localhost的时候, 需要启用这个设置.

loglevel: 日志级别,用于输出代理服务器的日志信息, 有这些值info(默认值), debug, warn, error, silent.

接下来在angular.json里为serve目标添加proxyConfig选项

"serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "proxyConfig": "proxy.conf.json"
          }
        },

也可以配置package.json里的scripts

"scripts": {
    "start": "ng serve --proxy-config proxy.conf.json"
  }

接下来重新启动项目,代理服务器就能生效了.

我们可以测试一下

在本地用nodejs和express搭建一个服务器

const express = require('express');
const app = express();

app.get('/api/users', (req, res) => {
    res.json([
        { name: '张三', id: 1 },
        { name: '李四', id: 2 },
        { name: '王五', id: 3 }
    ]);
})

app.listen('8080', () => {
    console.log('服务器已启动...');
})

启动服务器

打开网站试验一下

服务器生效了

接下来先把proxyConfig的配置取消掉, 看看正常情况下是什么样子的

"options": {
      "proxyConfig": ""
 }

启动项目,在组件里写下一些代码来测试

import { Component, ViewChild, ElementRef, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {

  constructor(private http: HttpClient) {

  }

  ngOnInit(): void {

  }

  getData() {
    this.http.get('http://localhost:8080/api/users').subscribe((data) => {
        console.log(data);
    })
  }
}

Html

<div>Angular Serve Proxy</div>
<button (click)="getData()">get data</button>

点击按钮发起请求

跨域了,请求没成功

接下来重新配置proxyConfig选项,重启项目

"options": {
            "proxyConfig": "proxy.conf.json"
          }

修改getData方法里的url

getData() {
    this.http.get('/api/users').subscribe((data) => {
        console.log(data);
    })
  }

重新发起请求

  请求成功,拿到数据。

总结一下:

Angular Serve Proxyng serve提供的一个代理服务器,主要有下面三种好处。

能在本地开发中解决CORS问题,绕过浏览器的同源策略设置。

能简化在本地开发过程中连接到在不同域名或端口的API服务器的流程。

能隐藏后端服务器细节,只暴露代理服务器,增强安全性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/801769.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

14 Linux实操篇-进程管理(重点)

14 Linux实操篇-进程管理&#xff08;重点&#xff09; 文章目录 14 Linux实操篇-进程管理&#xff08;重点&#xff09;14.1 进程的基本操作14.1.1 进程和程序14.1.2 父进程和子进程14.1.3 常见的Linux进程14.1.4 显示系统执行的进程-ps14.1.5 终止进程-kill/killall14.1.6 查…

应用在工业车间环境温湿度数据看板中的温度传感芯片

现在的制造生产行业不断的实现可视化生产,特别是一些特殊的生产行业需要对一些重点的场合或者生产环境进行环境监控,但是要是想要实时查看室内环境完全依靠人工来巡查是费时又费力的,要想解决这一难题还得引进现在的硬件环境数据监控看板,它是针对于现在制造业的一些特殊环境而…

EIGRP路由协议(红茶三杯CCNA)

EIGRP&#xff08;Enhanced Interior Gateway Routing Protocol&#xff09;增强型内部网关协议-Cisco独有 前身对比 特点&#xff1a; 1. 快速收敛-路由条目不过期&#xff0c;拥有备份路由 2. 高级距离矢量协议-具有距离矢量性和链路状态协议特征 3. 无类路由协议-可划分子…

P1118 [USACO06FEB] Backward Digit Sums G/S(dfs+思维杨辉三角)

1&#xff1a;题目分析 那么我只需要枚举1~n位置上的数&#xff0c;看哪个符合要求。 2&#xff1a;补充&#xff1a; 一个数只能用一次&#xff0c;因为结果是1~n的排列&#xff08;最后组成肯定是1~n的每个数都出现过&#xff09;。 3&#xff1a; ACcode(加注释)&#xff…

网格梯度离散化 gradient

欢迎关注更多精彩 关注我&#xff0c;学习常用算法与数据结构&#xff0c;一题多解&#xff0c;降维打击。 参考自polygon mesh proccessing这本书 重心坐标定理 定理证明点击前往 已经三角形三点上的函数值分别为gi,gj,gk。 可以利用插值得到g处的函数值。 g α g i β …

Redis优惠券秒杀超卖问题

Redis秒杀超卖问题 前言一、出现秒杀超卖的原因二、超卖解决方案使用乐观锁解决超卖问题程序中进行解决 前言 这是我认为b站上最好的redis教程&#xff0c;各方面讲解透彻&#xff0c;知识点覆盖比较全。 黑马redis视频链接&#xff1a;B站黑马redis教学视频 本文参考黑马redi…

多点测试激光焊缝透光率检测仪

聚丙烯&#xff08;PP&#xff09;是日常生活生产中常见的一种塑料&#xff0c;具有较高的耐冲击性&#xff0c;机械强度以及良好的抗腐蚀性&#xff0c;如能耐多种有机溶剂和酸碱腐蚀性液体&#xff0c;被广泛应用于家用电器的绝缘外壳、培养瓶、食品袋、饮料包装瓶等产品中。…

volley 学习笔记1--发送请求

一、概览 Volley 具有以下优势&#xff1a; 自动网络请求调度。 多个并发网络连接。 透明磁盘和具有标准 HTTP 缓存一致性的内存响应缓存。 支持请求优先级。 取消请求 API。您可以取消单个请求&#xff0c;也可以设置要取消的请求的时间段或范围。 可轻松自定义&#xff…

Docker学习笔记,包含docker安装、常用命令、dockerfile、docker-compose等等

&#x1f600;&#x1f600;&#x1f600;创作不易&#xff0c;各位看官点赞收藏. 文章目录 Docker 学习笔记1、容器2、Docker 安装3、Docker 常用命令4、Docker 镜像5、自定义镜像5.1、镜像推送到阿里云5.2、镜像私有库 6、数据卷7、Docker 软件安装8、Docker File8.1、常见保…

如何为WordPress博客网站配置免费域名HTTPS证书

文章目录 如何为WordPress博客网站配置免费域名HTTPS证书前置条件&#xff1a;步骤1 申请免费的域名HTTPS证书步骤2 将HTTP证书配置到cpolar的配置文件中2.1 创建证书文件夹2.2 修改cpolar配置文件2.3 重启cpolar服务2.4 查看后台Wordpress隧道是否在线正常2.5 用浏览器打开站点…

php适合做erp吗?

首先我们来了解一下什么是ERP&#xff1f; ERP——Enterprise Resource Planning 企业资源计划系统&#xff0c;是指在信息技术基础上&#xff0c;以系统化的管理思想&#xff0c;为企业决策层及员工提供决策运行手段的管理平台。 ERP系统集中信息技术与先进的管理思想于一身…

HCIP——OSPF优化、拓展配置及选路规则

OSPF优化以及拓展配置 一、OSPF的优化1、汇总域间路由汇总域外路由汇总 2、特殊区域末梢区域完全末梢区域 NSSA非完全末梢区域Totally NSSA(完全的非完全末梢区域) 二、OSPF的拓展配置1、手工认证2、加快收敛3、沉默接口缺省路由 4、路由过滤5、路由控制5.1 修改优先级5.2 修改…

「2024」预备研究生mem-带绝对值的方程高次方程替代降次法

一、带绝对值的方程 二、高次方程替代降次法

Mybatis学习笔记,包含mybatis基本使用、关系映射、动态SQL、分页插件等等

&#x1f600;&#x1f600;&#x1f600;创作不易&#xff0c;各位看官点赞收藏. 文章目录 MyBatis 学习笔记1、Mybatis Demo 程序2、Mybatis 核心配置文件3、Mybatis Mapper 传参映射4、Mybatis 查询结果5、Mybatis 关系映射处理5.1、多对一关系映射处理5.2、一对多关系映射处…

前后端分离开发流程

1、介绍 在前后端分离开发中&#xff0c;前端负责用户界面和交互逻辑的实现&#xff0c;后端则处理业务逻辑和数据持久化。这种开发模式的优势在于前后端可以独立进行开发&#xff0c;提高了开发效率&#xff0c;并且使得前后端可以采用不同的技术栈来实现各自的功能。 2、开…

golang 中的 cronjob

引言 最近做了一个需求&#xff0c;是定时任务相关的。以前定时任务都是通过 linux crontab 去实现的&#xff0c;现在服务上云(k8s)了&#xff0c;尝试了 k8s 的 CronJob&#xff0c;由于公司提供的是界面化工具&#xff0c;使用、查看起来很不方便。于是有了本文&#xff0c…

【技术积累】Vue.js中的核心知识

Vue的生命周期 Vue中的生命周期是指组件从创建到销毁的整个过程中&#xff0c;会触发一系列的钩子函数 Vue2中的生命周期 Vue2中的生命周期钩子函数是在组件的不同阶段执行的特定函数。这些钩子函数允许开发者在组件的不同生命周期阶段执行自定义的逻辑。 Vue2中的生命周期钩…

【雕爷学编程】MicroPython动手做(02)——尝试搭建K210开发板的IDE环境5

#尝试搭建K210的Micropython开发环境&#xff08;Win10&#xff09; #实验程序之三&#xff1a;更新频率演示 #尝试搭建K210的Micropython开发环境&#xff08;Win10&#xff09; #实验程序之三&#xff1a;更新频率演示from Maix import freqcpu_freq, kpu_freq freq.get() …

数学建模-蒙特卡洛模拟

%% 蒙特卡罗用于模拟三门问题 clear;clc %% &#xff08;1&#xff09;预备知识 % randi([a,b],m,n)函数可在指定区间[a,b]内随机取出大小为m*n的整数矩阵 randi([1,5],5,8) %在区间[1,5]内随机取出大小为5*8的整数矩阵 % 2 5 4 5 3 1 4 2 %…

市面上的ipad国产触控笔怎么样?精选的性价比电容笔

要知道&#xff0c;真正的苹果品牌的那款原装电容笔&#xff0c;光是一支电容笔就价格近千元。实际上&#xff0c;平替电容笔对没有太多预算的用户是个不错的选择。一支苹果品牌的电容笔&#xff0c;价格是平替品牌的四倍&#xff0c;但电容笔的书写效果&#xff0c;却丝毫不逊…