Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 第9号CORS发行_Angular_Cors - Fatal编程技术网

Angular 第9号CORS发行

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"

我正在将Angular应用程序从8迁移到9,现在我遇到了CORS问题,这在迁移之前是没有的。为什么我对8没有这个问题

  • 在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这听起来应该可以工作。。。但事实并非如此(参见我的帖子编辑)。