pro*_*mac 3 javascript ajax access-control cors
我了解 CORS 以及如何在服务器响应上设置适当的 Access-Control-* 标头。我发现的问题是,即使我的服务器正在响应Access-Control-Allow-Origin:*,Chrome 也拒绝接受响应。
选项请求:
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
Run Code Online (Sandbox Code Playgroud)
回复:
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
Run Code Online (Sandbox Code Playgroud)
在调试控制台中,Chrome 显示:
XMLHttpRequest 无法加载 http://****/api/shows/1。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问 Origin 'localhost:8888'。
显然,是一个访问控制允许来源的响应,但由于某种原因铬认为它是无效的?是否存在无法在此响应中使用通配符的情况?
提前致谢!
在这种情况下,我通过Access-Control-*在GET响应中也包含标头来解决这个问题。根据我对规范的理解,这应该不是必需的,但问题是这样解决的。
如果有人对此有解释,我很想听听
Access-Control-Request-Headers 区分大小写...accept 应该是 Accept