背景

如题,最近碰到个angular项目,它是作为子系统,集成到一个使用了无界微前端框架的父项目中去。用户信息是父项目通过无界传递出来的,所以本地开发的时候,直接通过父项目来访问本地子项目会比较方便一点。不可避免的就碰到了跨域的问题。angular国内用的不是很多,所以没有百度,直接查询官方文档。经过了一番查询,得到了以下解决方法。

思路

angular在本地开发时,使用的是ng serve来启动一个webpack的devServer服务器,所以只要按以下两个步骤来基本上就能完事儿:

  1. 找到angular项目是在哪儿配置devServer
  2. 找到devServer的跨域相关的配置(基本上这种web服务器都会有跨域配置的,要么是设置cors,要么是设置headers)

解决方法

1. 找到angular项目是在哪儿配置devServer

翻阅angular官网可以知道,angular项目的基本配置都是在项目根目录的angular.json文件中。
至于devServer相关配置,官网也写了,可以在如下节点找到

{
	"projects":{
		"项目名称": {
			"architect":{
				"serve": {
					"options":{
						//devServer相关配置
					}
				}
			}
		}
	}
}

2. 找到devServer的跨域相关的配置

这个方式就比较多了,既然介绍了是webpack的devServer,那直接去找webpack的官方文档即可。
webpack官网的截图
(嗯。。一眼就看到了headers。。大概率就是这么配置的了)

接下来尝试在angular.json中配置headers
在这里插入图片描述
(得。。vscode直接提示了。。哪儿用得着翻文档。。)

把允许CORS的请求头配置上去,最终改动的配置如下

{
	"projects":{
		"项目名称": {
			"architect":{
				"serve": {
					"options":{
			            "headers": {
			              "Access-Control-Allow-Origin": "*"
			            }
					}
				}
			}
		}
	}
}

重新启动后,在父项目中,可以直接访问本地angular子项目了。
(水了一篇,大佬勿喷)

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐