从jqXHR获取所有响应头
在我的服务器上(用Go编写),我正在发送一个自定义头字段,当我进行ajax调用时,我正在尝试读取该字段。
$.ajax({ url: url, success: function(data, status, request) { console.log("Custom field: " + request.getResponseHeader('Custom-Header')); // doing stuff with data } });
响应
HTTP/1.1 200 OK Access-Control-Allow-Origin: * Custom-Header: some,comma,separated,stuff,here Content-Type: text/csv Date: Mon, 10 Aug 2015 15:42:34 GMT Content-Length: 1379
这将始终返回null
。 我尝试将getResponseHeader
用于我已确认在响应数据包中的常规标头,例如Content-Length
, Date
和Access-Control-Allow-Origin
; 这些都返回null
。 唯一有效的标题是Content-Type
。
如果我使用getAllResponseHeaders()
,它将返回一个只包含Content-Type: text/csv
的字符串Content-Type: text/csv
。
如何访问非Content-Type
其他标头? 我看到3年前有一个与此相关的错误 ,但只影响了Firefox。 我使用的是Chrome v 44.0.2403.130(64位)。
您有Access-Control-Allow-Origin
,这意味着这是一个跨源请求。
从规格 :
跨源资源共享规范过滤了getAllResponseHeaders()为跨源请求公开的响应头。
您需要使用Access-Control-Expose-Headers
明确地使标头可用于跨源请求。
MDN的示例:
Access-Control-Expose-Headers: X-My-Custom-Header, X-Another-Custom-Header
所以:
Access-Control-Expose-Headers: Custom-Header
也就是说,请使用X-
前缀作为您的eXperimental非标准标题。