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

时间:2011-05-24 15:00:47

标签: ajax http-headers cross-domain cors

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

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

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

2 个答案:

答案 0 :(得分:16)

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

Access-Control-Expose-Headers: Foo

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

这是应该工作方式的解释。但请注意,旧版浏览器中存在无法在客户端上读取响应标头的错误。有关详情,请参阅此处:CORS xmlhttprequest HEAD method

答案 1 :(得分:1)

我有同样的问题,并在Chromium邮件列表上找到答案,这是在webkit中修复的,它将在crhomium~19中实现。

我会尝试找到主题并更新我的答案。