【问题标题】:How can I get response header via cross-domain ajax?如何通过跨域 ajax 获取响应头?
【发布时间】:2011-09-01 00:51:20
【问题描述】:

我正在尝试阅读文档,我必须承认这并不容易阅读。我没有问题(在添加 Access-Control-Allow-Origin 标头后)读取 responseText,但无法在除 Firefox 之外的任何地方获取响应标头。

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

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

【问题讨论】:

    标签: ajax http-headers cross-domain cors


    【解决方案1】:

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

    Access-Control-Expose-Headers: Foo
    

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

    这是对事物应该如何运作的解释。但是,请注意,旧浏览器中存在无法在客户端读取响应标头的错误。更多详情请看这里:CORS xmlhttprequest HEAD method

    【讨论】:

    • 您好,我已将以下内容添加到服务器端 API。 header(Access-Control-Allow-Headers: temp'); header('Access-Control-Expose-Headers: temp); header('temp: '. 12345); 当我向 API 发出 cURL 请求时,我得到了标头以及响应数据。但是当我对同一个 API 进行 AJAX 调用时,我只得到数据,没有标题。
    • Anish,你的评论听起来更适合作为它自己的 Stack Overflow 问题。
    • 即使在今天这个问题/答案是否相关。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-10
      • 2010-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多