2011-05-24 42 views
6

我想阅读文档,我必须承认这不是一个容易的阅读。我没有任何问题(在添加Access-Control-Allow-Origin头文件后)读取responseText,但无法在除Firefox之外的任何地方获取响应头。如何通过跨域ajax获取响应标题?

所以,我的问题是什么是正确的方式来获得响应头,使用跨域AJAX?

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

回答

16

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

Access-Control-Expose-Headers: Foo 

在客户端,你可以阅读所有的通过调用xhr.getAllResponseHeaders()来返回响应头。这将返回响应头为一个字符串,然后你可以用下面的代码解析成一个对象:https://gist.github.com/706839

这是怎么会事应该工作的说明。但是,请注意,旧版浏览器中存在无法在客户端上读取响应标头的错误。在这里看到更多的细节:CORS xmlhttprequest HEAD method

+0

嗨,我已经添加到服务器端API以下内容。 'header('Access-Control-Allow-Headers:temp');''header('Access-Control-Expose-Headers:temp);'header('temp:'。12345);'当我制作一个cURL对API的请求,我会得到标题以及响应数据。但是当我对同一个API进行AJAX调用时,我只能得到没有头的数据。 – 2013-11-23 04:58:06

+0

Anish,您的评论听起来更合适,因为它自己的堆栈溢出问题。 – monsur 2013-11-23 20:36:58

+0

即使在今天这个问题/答案是相关的。 – refactor 2017-07-06 12:14:18

1

我有同样的问题,并找到了Chromium邮件列表的答案,这是固定在webkit中,它将被实施在crhomium〜19。

我将尝试查找主题并更新我的答案。