jqXHR.getAllResponseHeaders()不会返回所有标头
在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);
来自jquery官方网站:
目前,由于Firefox中的一个错误,.getAllResponseHeaders()返回空字符串,尽管.getResponseHeader(’Content-Type’)返回非空字符串,不支持在Firefox中使用jQuery自动解码JSON CORS响应。
svenyonson在评论中称呼这个,但对我来说这是答案,所以我正在提升它。 如果您正在执行CORS ,则服务器必须明确允许客户端读取哪些标头。 如果你想在javascript中读取X-My-CustomHeader
,那么这个头应该在服务器响应中:
Access-Control-Expose-Headers: X-My-CustomHeader
这里有更多细节。