【问题标题】:AngularJS $http object not showing all headers from responseAngularJS $http 对象未显示响应中的所有标头
【发布时间】:2014-03-05 07:57:08
【问题描述】:

我遇到了 AngularJS 的 $http 服务没有从我正在轮询的 API 返回所有标头的问题。这是我得到的:

$http({
    method: 'POST',
    withCredentials: true,
    url: 'http://api.mydomain.com/query',
    data: JSON.stringify(parameters)
})
.success(function(data, status, headers, config){
    ... // setting some scope parameters based on data
    console.log(headers());
})

我可以通过 Chrome 中的网络选项卡得知 API 正在返回一堆响应标头(我对 X-Pagination-Total-Items 标头特别感兴趣)。

以下是请求中网络选项卡的屏幕截图:

但是上面的 console.log 语句(应该输出所有的标题)只返回两个:

知道发生了什么吗?我如何真正访问从 AJAX 调用返回的所有标头?

谢谢,

-内特

【问题讨论】:

  • 您无法访问哪些标题? (另外,考虑在它们前面加上X-
  • Benjamin,我正在尝试获取 X-Pagination-Total-Items。我想知道这是否是 CORS 问题以及 Access-Control-Expose-Headers 是否不能使用通配符...

标签: javascript ajax angularjs


【解决方案1】:

原来 Access-Control-Expose-Headers 不能接受通配符。我们需要准确地指定客户端应该可以访问哪些标头,然后它才起作用。

【讨论】:

  • 我花了几个小时试图弄清楚这一点。谢谢,谢谢,一百万次谢谢
  • @EliGassert,很高兴它也对您有所帮助。 StackOverflow 的一大优点! :-)
  • 天哪.. 我也忘记将这些标题添加到我的 CORS 过滤器中。难怪我可以在浏览器响应中看到它们,但在 AngularJS headers() 调用输出中看不到。
  • 这是后端问题吗?
  • 是的,这是一个后端问题。您应该配置您的 Web 服务器以发送回所需的标头字段。不支持通配符,所以这不起作用; Access-Control-Expose-Headers:* 相反,您应该提供确切的标题字段,即 Access-Control-Expose-Headers:Etag
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-09-24
  • 1970-01-01
  • 2022-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多