asp.net – CORS错误 – 请求的资源上没有“Access-Control-Allow-Origin”标头

前端之家收集整理的这篇文章主要介绍了asp.net – CORS错误 – 请求的资源上没有“Access-Control-Allow-Origin”标头前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用Angular前端连接到WEB API 2后端.失败的用例如下.当用户注册成功注册后,他们必须登录系统并重定向到新页面以收集更多信息.我正在使用TOKENS进行身份验证.

我在WebAPI配置中启用了CORS:

var cors = new EnableCorsAttribute("http://localhost:7812","*","*");
        config.EnableCors(cors);

注册请求成功,响应头具有所需的CORS头:

**Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:http://localhost:7812**
Content-Length:0
Date:Sun,24 Aug 2014 09:31:55 GMT
Server:Microsoft-IIS/8.0
X-Powered-By:ASP.NET
X-SourceFiles:=?UTF-8?B?QzpcUHJvamVjdHNcVGVzdGluZ1xNYWx0QXBhcnRtZW50c1xNYWx0YXBhcnRtZW50cy5BUElcTWFsdGFwYXJ0bWVudHMuQVBJXGFwaVxhY2NvdW50XHJlZ2lzdGVy?=

在下一步中,我尝试将用户登录到系统.作为登录的一部分,前端通过请求URL从服务器请求TOKEN:http:// localhost:7802 / token.请求头再次发送一个Origin头Origin:http:// localhost:7812但这次我得到错误:XMLHttpRequest无法加载http:// localhost:7802 / token.请求的资源上不存在“Access-Control-Allow-Origin”标头.因此不允许Origin’http:// localhost:7812’访问.

有人有主意吗?

解决方法

在处理CORS时,我们需要记住,浏览器可能会针对非GET请求发送两个请求.通常有预检(OPTIONS)请求,然后是实际请求(POST).在预检请求期间,服务器需要添加Access-Control-Allow-Origin标头,其值与请求Origin标头匹配.这授权发送后续请求.

对于后续/实际请求,服务器还需要添加Access-Control-Allow-Origin标头.否则,此请求失败.

使用OWIN OAuthAuthorizationServerProvider时,我们需要自定义MatchEndpoint处理程序来管理标头逻辑.此处理程序在验证客户端身份验证之前执

有关更多背景信息,请查看此链接http://www.ozkary.com/2016/04/web-api-owin-cors-handling-no-access.html

猜你在找的asp.Net相关文章