Chrome无法识别Access-Control-Allow-Origin

时间:2014-10-03 19:26:25

标签: javascript ajax cors access-control

我理解CORS以及如何在服务器响应上设置适当的Access-Control- *标头。我发现的问题是,即使我的服务器使用Access-Control-Allow-Origin:*进行回复,Chrome也拒绝接受回复。

OPTIONS请求:

OPTIONS /api/shows/1 HTTP/1.1
Host: *****
Connection: keep-alive
Access-Control-Request-Method: GET
Origin: http://localhost:8888
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36
Access-Control-Request-Headers: accept, platform, version
Accept: */*
Referer: http://local host:8888/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8

响应:

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 0
Content-Type: */*
Content-Encoding: gzip
Expires: -1
Server: Microsoft-IIS/8.0
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Content-Type, Platform, Version
Access-Control-Allow-Methods: OPTIONS, TRACE, GET, HEAD, POST, PUT, DELETE
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri, 03 Oct 2014 19:07:28 GMT

在调试控制台中,Chrome会显示:

XMLHttpRequest无法加载http:// **** / api / shows / 1。 请求的资源上没有'Access-Control-Allow-Origin'标头。因此不允许原点'localhost:8888'访问。

显然,在响应中是一个Access-Control-Allow-Origin,但由于某些原因,Chrome认为它无效?是否存在无法使用通配符进行此响应的情况?

提前致谢!

3 个答案:

答案 0 :(得分:3)

在这种情况下,我也通过在Access-Control-*响应中包含GET标头来解决了这个问题。根据我对规范的理解,这不应该是必需的,但问题是通过这种方式解决的。

如果有人对此有解释,我很乐意听到它

答案 1 :(得分:1)

Access-Control-Request-Headers区分大小写...... 接受应该接受

答案 2 :(得分:-1)

转到“桌面”,选择“Google Chrome”图标并“右键单击”,然后转到“属性”

在属性中找到带有标签“Target”的输入框,在此框中铬的位置如下所示。

“C:\ Program Files(x86)\ Google \ Chrome \ Application \ chrome.exe”--disable-web-security --user-data-dir =“c:/ someFolderName”

最后,新鲜启动Chrome以在屏幕顶部看到一个带黄色的弹出窗口

来源:https://www.thegeekstuff.com/2016/09/disable-same-origin-policy/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%253A+TheGeekStuff+(The+Geek+Stuff)

祝你好运