【问题标题】:(Reason: CORS header ‘Access-Control-Allow-Origin’ does not match ‘(null)’)(原因:CORS 标头“Access-Control-Allow-Origin”与“(null)”不匹配)
【发布时间】:2017-11-03 04:26:03
【问题描述】:

我对 AngularJS 和基于令牌的身份验证完全陌生。实际上我想使用 AngularJS 框架作为我的前端,而 API 作为后端。因此,我遵循了互联网上的一些教程,并将我的代码附加在 https://github.com/mmSebastian/angularjsWebAPI 中。

当我尝试登录我的网络应用程序时,我在浏览器中遇到以下错误:

  • 火狐

跨源请求被阻止:同源策略不允许在 http://localhost:50987/token 读取远程资源。 (原因:CORS 标头“Access-Control-Allow-Origin”与“(null)”不匹配)。

无法加载 http://localhost:50987/token: 'Access-Control-Allow-Origin' 标头包含多个值 '*, *',但只允许一个。 Origin "http://localhost:52386" 因此不允许访问。

  • 边缘

SEC7128:CORS 响应不允许使用多个 Access-Control-Allow-Origin 标头。

但是,当我通过 Postman 运行 http://localhost:50987/token 时,它工作正常。

我尝试了以下链接,但仍然无法解决。请对此提供帮助。

  1. Angularjs: Why does adding an authorization header cause a -1 status response?

  2. MVC web api: No 'Access-Control-Allow-Origin' header is present on the requested resource

【问题讨论】:

  • 欢迎来到 StackOverflow,我强烈建议您通过 this 改进您的问题,从而增加获得正确答案的机会。
  • 您能告诉我们您的客户端发送到服务器的 Origin 标头的值是多少吗?
  • @McMutton 对不起我的语言。客户端是localhost:52386,而服务器是localhost:50987。可能是我表达不好,所以附上代码。
  • 您在 Global.asax.cs 的这一行周围添加了其他标题:github.com/mmSebastian/angularjsWebAPI/blob/master/FiiiEx/…,但您没有为 Access-Control-Allow-Origin 定义任何内容。

标签: c# angularjs asp.net-web-api asp.net-identity


【解决方案1】:

CORS(跨源)要求浏览器发出的 HTTP 请求与服务器具有完全相同的域。

例如从 localhost:8080 到 localhost:8080 的请求将起作用

例如从 localhost:8080 到 localhost:8081 的请求将不起作用

你会得到一个 CORS 错误。这仅由浏览器强制执行,因此 POSTMAN 可以正常工作。

要解决此问题,请在您的服务器上添加相关的 CORS 标头,例如:

Access-Control-Allow-Origin: *

您可能需要在服务器上添加其他 Access-Control- 标头。

或者,您可以让您的网络服务器将某些请求直接代理到您的后端,从而绕过浏览器中的 CORS 强制执行。

【讨论】:

  • 感谢您的信息。我已经添加了相关的 CORS 标头,但似乎不起作用。我已将我的代码附加到github.com/mmSebastian/angularjsWebAPI。你介意纠正我哪里做错了吗?
猜你喜欢
  • 2017-07-09
  • 2018-04-12
  • 2020-11-12
  • 1970-01-01
  • 1970-01-01
  • 2020-09-21
  • 2021-01-25
  • 2017-01-09
  • 2019-06-19
相关资源
最近更新 更多