当从不同主机上的页面请求相同的远程资源时,请求在第一个请求上以及在同一主机上的页面上的后续请求中成功,但在另一个主机上的页面上失败。我在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时以编程方式禁用缓存来解决此问题?
答案 0 :(得分:3)
我认为您遇到的问题是w3.org没有使用Vary
标头,尽管在请求中改变了Access-Control-Allow-Origin
的值。请参阅https://fetch.spec.whatwg.org/#cors-protocol-and-http-caches。