微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/aspnet/248491.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐