跨域资源共享GET:“拒绝从响应中获取不安全标题”etag“'

一个简单的GET请求,没有自定义标题。 响应按预期返回。 正文中的数据是可访问的,但不是标题。

当我尝试访问“etag”标题时,浏览器引发exception:

拒绝获取不安全的标题“etag”

Chrome,Safari和Firefox的行为都是一样的。 我没有在IE上testing它。

我在这里错过了什么?

使用CORS时,只显示简单的响应标头。 这里定义了简单的响应标题。 ETag不是一个简单的响应标题。 如果您想公开非简单标题,您需要设置Access-Control-Expose-Headers标题,如下所示:

 Access-Control-Expose-Headers: ETag 

不过,请注意,我发现Chrome,Safari和Firefox中的错误会阻止非简单的头文件正确显示。 现在可能已经修好了,我不确定。

您不需要执行预检请求,因为只有非GET / POST http方法或非简单请求标头才需要预检(并且您在询问响应标头)。

你有没有试过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