如何获取 Javascript 中的所有 headers?
How do I fetch all headers in Javascript?
快速而肮脏的实验:
function fetchHead(url) {
var request = new XMLHttpRequest();
request.onreadystatechange = function () {
if (request.readyState === XMLHttpRequest.DONE) {
console.log(request.getAllResponseHeaders())
}
}
request.open('HEAD', url, true)
request.send(null)
}
它只显示了三个 header:["cache-control", "content-type", "expires"]
。但是实际响应中有十几个 header,如开发工具栏中的网络检查器所示。
是否有任何(其他)方法来获取 Javascript 中的所有 header?是否有可能(完全)从 Javascript 中读取自定义响应 header?
PS - 响应确实有 Access-Control-Allow-Origin: *
。不知何故,浏览器似乎确实去掉了很多 headers。
我无法重现这个。 MDN 表示所有 headers 将以小写形式返回。
出于安全原因,浏览器限制通过 XMLHttpRequest 访问大多数 HTTP Headers 调用。最好的参考可能是 Fetch standard.
这些限制列表可以通过服务器返回 Access-Control-Expose-Headers
header 告诉浏览器哪些 header 是安全的 JavaScript 可以访问。
快速而肮脏的实验:
function fetchHead(url) {
var request = new XMLHttpRequest();
request.onreadystatechange = function () {
if (request.readyState === XMLHttpRequest.DONE) {
console.log(request.getAllResponseHeaders())
}
}
request.open('HEAD', url, true)
request.send(null)
}
它只显示了三个 header:["cache-control", "content-type", "expires"]
。但是实际响应中有十几个 header,如开发工具栏中的网络检查器所示。
是否有任何(其他)方法来获取 Javascript 中的所有 header?是否有可能(完全)从 Javascript 中读取自定义响应 header?
PS - 响应确实有 Access-Control-Allow-Origin: *
。不知何故,浏览器似乎确实去掉了很多 headers。
我无法重现这个。 MDN 表示所有 headers 将以小写形式返回。
出于安全原因,浏览器限制通过 XMLHttpRequest 访问大多数 HTTP Headers 调用。最好的参考可能是 Fetch standard.
这些限制列表可以通过服务器返回 Access-Control-Expose-Headers
header 告诉浏览器哪些 header 是安全的 JavaScript 可以访问。