如何获取 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 可以访问。