Angular 第9号CORS发行
我正在将Angular应用程序从8迁移到9,现在我遇到了CORS问题,这在迁移之前是没有的。为什么我对8没有这个问题Angular 第9号CORS发行,angular,cors,Angular,Cors,我正在将Angular应用程序从8迁移到9,现在我遇到了CORS问题,这在迁移之前是没有的。为什么我对8没有这个问题 在localhost:4200上使用ng serve运行web 后端在本地主机上运行(默认端口80) 因此,我在我的应用程序中添加了一个proxy.conf.json文件: { "/api/*": { "target": "http://localhost:80", "secure": false, "logLevel"
- 在localhost:4200上使用ng serve运行web
- 后端在本地主机上运行(默认端口80)
proxy.conf.json
文件:
{
"/api/*": {
"target": "http://localhost:80",
"secure": false,
"logLevel": "debug"
}
}
我的angular.json
看起来像:
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "myapp:build",
"proxyConfig": "src/proxy.conf.json"
},
然而,我在调用后端时仍然会遇到CORS错误。还有什么我该做的吗
我还尝试使用以下命令运行该应用程序ngserve--proxy-config src/proxy.conf.json
,但没有成功,同样的错误
[编辑]
将
添加到我的后端配置后,我得到以下结果:
访问位于的XMLHttpRequest'http://localhost/mybackend/token“起源”http://localhost:4200'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:'access control Allow Origin'标头包含多个值'http://localhost:4200, http://localhost:4200',但只允许一个。
但我只加了一次。我也没有添加代码
[编辑2]
我的配置:
{
"/api/*": {
"target": "http://localhost:80/mybackend/",
"pathRewrite": { "^/api": "" },
"secure": false,
"changeOrigin": true,
"logLevel": "debug"
}
}
我还从后端删除了@adrisons建议的访问控制允许源代码。我仍然会遇到同样的错误:
访问位于的XMLHttpRequest'http://localhost/mybackend/token“起源”http://localhost:4200'已被CORS策略阻止:请求的资源上不存在'Access Control Allow Origin'标头。
我遇到了相同的问题
您需要向代理添加changeOrigin
。如果要从目标url中删除/api/
,还可以使用pathrewite
"/api/*": {
"target": "http://localhost:80",
"pathRewrite": { "^/api": "" },
"secure": false,
"changeOrigin": true,
"logLevel": "debug"
}
我也有同样的问题
您需要向代理添加changeOrigin
。如果要从目标url中删除/api/
,还可以使用pathrewite
"/api/*": {
"target": "http://localhost:80",
"pathRewrite": { "^/api": "" },
"secure": false,
"changeOrigin": true,
"logLevel": "debug"
}
该错误实际上是阻止接收响应,还是只是显示在控制台中?我记得升级后也遇到过类似的问题,但该应用程序实际上运行良好。这与chrome的更新有关,chrome现在正在记录升级之前发生的警告,我只是在控制台中查看时才注意到它们。您是否在后端设置了“访问控制允许来源”?不同的端口意味着它是不同的源。我知道localhost是此规则的排除项,但您的浏览器的最新版本现在可以更改它并开始将其视为不同的源。@BizzyBob,响应被阻止,因此这不仅仅是一个警告。@AlexanderTrakhimenok,我理解,但如果我使用同一浏览器来处理Angular 8,它神奇地工作。。。所以我认为这是在角度上发生了变化。你的后端是什么。NET?该错误实际上是阻止接收响应,还是只是显示在控制台中?我记得升级后也遇到过类似的问题,但该应用程序实际上运行良好。这与chrome的更新有关,chrome现在正在记录升级之前发生的警告,我只是在控制台中查看时才注意到它们。您是否在后端设置了“访问控制允许来源”?不同的端口意味着它是不同的源。我知道localhost是此规则的排除项,但您的浏览器的最新版本现在可以更改它并开始将其视为不同的源。@BizzyBob,响应被阻止,因此这不仅仅是一个警告。@AlexanderTrakhimenok,我理解,但如果我使用同一浏览器来处理Angular 8,它神奇地工作。。。所以我认为这是在角度上发生了变化。你的后端是什么。网?谢谢。我的后端在。我应该将这些参数设置为什么值?您可以尝试使用“pathRewrite”:{“^/api”:“/mybackend”}
复制该配置并将目标值替换为localhost:80/mybackend
,使用此配置您不需要设置访问控制允许原始标头:)@adrisons这听起来应该可以工作。。。但它没有(见我的帖子编辑)。谢谢。我的后端在。我应该将这些参数设置为什么值?您可以尝试使用“pathRewrite”:{“^/api”:“/mybackend”}
复制该配置并将目标值替换为localhost:80/mybackend
,使用此配置您不需要设置访问控制允许原始标头:)@adrisons这听起来应该可以工作。。。但事实并非如此(参见我的帖子编辑)。