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

Edd*_*rro 19 ajax jquery

jQuery.ajax()通话后jqXHR.getAllResponseHeaders()不会返回所有标题.服务器响应以下标头:

Connection: keep-alive
Content-Length: 64
Content-Type: application/json
X-My-CustomHeader: whatever
Run Code Online (Sandbox Code Playgroud)

getAllResponseHeaders() 仅返回:

Content-Type: application/json
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

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

$.ajax(request);
Run Code Online (Sandbox Code Playgroud)

Chr*_*ris 10

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

Access-Control-Expose-Headers: X-My-CustomHeader
Run Code Online (Sandbox Code Playgroud)

更多细节在这里.


Fab*_*uda 6

来自jquery官方网站:

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

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