如何通过跨域ajax获取响应头?

sha*_*unc 6 ajax cross-domain http-headers cors

我正在尝试阅读文档,我必须承认这不是一个简单的阅读.我没有问题(在添加Access-Control-Allow-Origin标头之后)读取responseText,但是除了Firefox之外无法获得响应标头.

所以,我的问题是使用跨域ajax获取响应头的正确方法是什么?

我试过使用(Access-Control-Expose-Headers),但是再次无法读取标题.

mon*_*sur 16

因此它应该工作的方式是在Access-Control-Expose-Headers标头中指定希望客户端有权访问的标头.例如,如果您的服务器设置了Foo响应标头,并且您希望客户端能够读取它,那么您的服务器也应该发送以下标头:

Access-Control-Expose-Headers: Foo
Run Code Online (Sandbox Code Playgroud)

在客户端,您可以通过调用xhr.getAllResponseHeaders()来读取所有响应头.这会将响应标头作为字符串返回,然后您可以使用以下代码将其解析为对象:https://gist.github.com/706839

这是对事情如何运作的解释.但请注意,旧版浏览器中存在无法在客户端上读取响应标头的错误.有关更多详细信息,请参见此处:CORS xmlhttprequest HEAD方法