CORS请求仅在从另一个域请求相同资源时失败

时间:2016-05-03 11:05:42

标签: ajax cors

当从不同主机上的页面请求相同的远程资源时,请求在第一个请求上以及在同一主机上的页面上的后续请求中成功,但在另一个主机上的页面上失败。我在firefox和chrome中都看到了这种行为,但奇怪的是并非总是如此。

要试用,请检查,以任何顺序访问这些页面:

按下第一页上的“请求数据”按钮后,您将看到一个包含远程资源内容的对话框,如果您尝试在另一台主机上执行相同操作,则可能会在浏览器控制台上看到以下内容:< / p>

  

阻止跨源请求:同源策略禁止读取   https://www.w3.org/People/Berners-Lee/card.rdf处的远程资源。   (原因:CORS标题'Access-Control-Allow-Origin'不匹配   'http://test.lodide.io')。

似乎浏览器正在缓存一些推断的Access-Control-Allow-Origin-Header,然后抱怨新主机不匹配。请注意,服务器实际上返回“*”作为标题的值。

有没有办法通过在发出XMLHttpRequest时以编程方式禁用缓存来解决此问题?

1 个答案:

答案 0 :(得分:3)

我认为您遇到的问题是w3.org没有使用Vary标头,尽管在请求中改变了Access-Control-Allow-Origin的值。请参阅https://fetch.spec.whatwg.org/#cors-protocol-and-http-caches