jqXHR.getAllResponseHeaders()不会返回所有标头

时间:2011-04-10 21:06:49

标签: ajax jquery

jQuery.ajax()来电后jqXHR.getAllResponseHeaders()将不会返回所有标头。服务器回复了以下标题:

Connection: keep-alive
Content-Length: 64
Content-Type: application/json
X-My-CustomHeader: whatever

getAllResponseHeaders()仅返回:

Content-Type: application/json

我做错了什么?

示例

var request = {
  'url': 'http://api.someExternalDomain.com/resource/',
  'type': someMethod,
  'success': function(data, textStatus, jqXHR) {
    console.log(jqXHR.getAllResponseHeaders());
  }
};

$.ajax(request);

2 个答案:

答案 0 :(得分:8)

svenyonson在评论中称呼这个,但对我来说这是答案,所以我提升了它。 如果您正在执行CORS ,则服务器必须明确允许客户端读取哪些标头。如果你想在javascript中阅读X-My-CustomHeader,那么这个标题应该在服务器响应中:

Access-Control-Expose-Headers: X-My-CustomHeader

更多细节here

答案 1 :(得分:6)

来自jquery官方网站:

  

目前,由于Firefox中存在一个bug .getAllResponseHeaders()   尽管.getResponseHeader('Content-Type')返回空字符串   返回非空字符串,自动解码JSON CORS响应   在Firefox中使用jQuery不受支持。

http://api.jquery.com/jQuery.ajax/