2017-10-19 449 views
1

我对AngularJS和基于令牌的身份验证完全陌生。其实我想用AngularJS框架作为我的前端,而API作为后端。因此,我遵循了一些来自互联网的教程,并附上我的代码https://github.com/mmSebastian/angularjsWebAPI(原因:CORS头'Access-Control-Allow-Origin'不匹配'(null)')

当我尝试登录我的web应用程序,我面对下面的错误在我的浏览器:

  • 火狐

跨来源请求阻止:同源策略不允许读的远程资源http:// localhost:50987 /令牌。 (原因:CORS头'Access-Control-Allow-Origin'不匹配'(null)')。

无法加载的http://本地主机:50987 /令牌:在 '访问控制允许来源' 标头包含多个值 '*,*',但只有一个是允许。原因“http:// localhost:52386”因此不被允许访问。

  • 边缘

SEC7128:多访问控制允许来源头部没有允许CORS响应。

但是,当我通过邮递员运行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

+0

欢迎来到StackOverflow,我强烈建议你通过[this](https://stackoverflow.com/help/mcve)来改善你的问题,从而增加获得正确答案的机会。 – McMutton

+0

您能告诉我们您的客户端发送到服务器的Origin头的价值是什么? – McMutton

+0

@McMutton我很抱歉我的语言。客户端将是http:// localhost:52386,而服务器将是http:// localhost:50987。可能我不能很好地表达,因此我附上了代码。 – mmSebastian

回答

0
CORS

(交叉原点)需要来自浏览器制成具有完全相同的域服务器的HTTP请求。

例如从本地主机:8080到本地主机:8080的请求将工作

例如,本地主机:8080到localhost:8081的请求将不起作用

而且您将收到CORS错误。这只是由浏览器执行,因此POSTMAN将正常工作。

要解决此问题,添加您的服务器例如: -

Access-Control-Allow-Origin: * 

您可能需要您的服务器上添加其他接入控制 - 头在相关CORS标头。

或者,您可以让您的Web服务器将某些请求直接代理到您的后端,从而绕过浏览器中的CORS实施。

+0

感谢您的信息。我添加了相关的CORS头文件,但似乎不起作用。我在https://github.com/mmSebastian/angularjsWebAPI附上我的代码。你想介意纠正我在哪里做错了吗? – mmSebastian