XMLHttpRequest: getAllResponseHeaders() 方法
注意:此功能在 Web Workers 中可用,但 Service Workers 除外。
XMLHttpRequest 方法 getAllResponseHeaders() 返回所有响应头,以 CRLF 分隔,作为一个字符串;如果没有收到响应,则返回 null。
如果发生了网络错误,则返回一个空字符串。
注意: 对于 multipart 请求,此方法返回的是请求的当前部分的头信息,而不是原始通道的头信息。
语法
js
getAllResponseHeaders()
参数
无。
返回值
一个字符串,表示所有响应头(除了字段名为 Set-Cookie 的头)以 CRLF 分隔;如果没有收到响应,则返回 null。如果发生了网络错误,则返回一个空字符串。
原始头信息字符串示例
http
date: Fri, 08 Dec 2017 21:04:30 GMT\r\n
content-encoding: gzip\r\n
x-content-type-options: nosniff\r\n
server: meinheld/0.6.1\r\n
x-frame-options: DENY\r\n
content-type: text/html; charset=utf-8\r\n
connection: keep-alive\r\n
strict-transport-security: max-age=63072000\r\n
vary: Cookie, Accept-Encoding\r\n
content-length: 6502\r\n
x-xss-protection: 1; mode=block\r\n
每行都以回车符和换行符(\r\n)结束。它们实际上是分隔每个头信息的定界符。
注意: 在现代浏览器中,根据最新规范,头信息名称将以全小写形式返回。
示例
此示例检查请求的 readystatechange 事件中的头信息。代码演示了如何获取原始头信息字符串,以及如何将其转换为一个单独的头信息数组,然后如何使用该数组创建头信息名称到其值的映射。
js
const request = new XMLHttpRequest();
request.open("GET", "foo.txt", true);
request.send();
request.onreadystatechange = () => {
if (request.readyState === request.HEADERS_RECEIVED) {
// Get the raw header string
const headers = request.getAllResponseHeaders();
// Convert the header string into an array
// of individual headers
const arr = headers.trim().split(/[\r\n]+/);
// Create a map of header names to values
const headerMap = {};
arr.forEach((line) => {
const parts = line.split(": ");
const header = parts.shift();
const value = parts.join(": ");
headerMap[header] = value;
});
}
};
完成此操作后,您可以例如:
js
const contentType = headerMap["content-type"];
此代码将 Content-Type 头信息的值获取到变量 contentType 中。
规范
| 规范 |
|---|
| XMLHttpRequest # getallresponseheaders()-方法 |
浏览器兼容性
加载中…