没有自定义标头的简单GET请求。响应按预期返回。可以访问正文中的数据,但不能访问标题。
当我尝试访问“etag”标题时,浏览器会引发异常:
拒绝接受不安全的标题“etag”
Chrome,Safari和Firefox的行为都一样。我没有在IE上测试它。
我在这里缺少什么?
答案 0 :(得分:80)
使用CORS时只暴露简单的响应头。简单的响应标头定义为here。 ETag
不是简单的响应标头。如果要公开非简单标头,则需要设置Access-Control-Expose-Headers
标头,如下所示:
Access-Control-Expose-Headers: ETag
但请注意,我注意到Chrome,Safari和Firefox中的错误会阻止非简单标题正确显示。现在可以修复,我不确定。
您不需要执行预检请求,因为只有非GET / POST http方法或非简单请求标头需要预检(并且您询问响应) 标题)。
答案 1 :(得分:2)
你有没有尝试过AJAX 2.0(跨域共享)是W3C最近推出的一种方法:http://www.w3.org/TR/XMLHttpRequest2/#ref-cors
此外还有另一种方法,即JSON-P,它就像一个JSON请求,但您可以将它用于跨域:http://en.wikipedia.org/wiki/JSONP
如果没有正确设置,两者都可能对网站所有者非常危险。因此在使用时要小心。
[PS] 不确定这是否有帮助:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html