Angular本地代理解决跨域问题

   今天在写完了前端的登录表单组件后,本地测试时由于前端运行在http:localhost:4200,而后端部署在其他主机上,访问后端接口产生了浏览器跨域问题,百度一番后找到了解决方案:
  
1.搭建本地代理到目标服务器;
   2.让后端在response添加Access-Control-Allow-Origin:*;这个http Header
   由于第二种方法可能会导致非法跨域攻击(CSRF),因此我采用了搭建本地代理的方法。
   好在Angular-cli开发环境提供给了我们一个本地代理:
   通过新建并配置Angular项目根文件夹下的proxy.conf.json文件:

{  
    "/api":{      
    	"target": "http://localhost:3000",  
    	"secure": false   
    }  
}
   文件中可包含多条配置规则,每一条配置都是以上格式,其中"/api"字段名是需要被代理的url规则表达式,可根据需要自行替换(这里我用**来代理所有的http请求),"target"字段内容"http://localhost:3000"是该url规则表达式下代理到的主机名(可以是域名或者ip)。
   最后要启动代理,需要将Angular项目根文件夹下的package.json文件中的"script"字段下的"start"字段改为"ng serve --proxy-config proxy.conf.json",并使用npm start命令在本地启动angular应用;或者直接执行ng serve --proxy-config proxy.conf.json命令来启动应用。这样本地代理就可以为本地angular应用服务了,大功告成!

猜你喜欢

转载自blog.csdn.net/buttonchan/article/details/79838270