使用 JavaScript 打印网页的 HTTP Headers

Printing the web page's HTTP Headers using JavaScript

所以我有一个基于 nodejs 框架构建的网络应用程序。目前我正在使用使用 OIDC 进行身份验证的 NGINX 反向代理。一旦用户通过身份验证,它就会将它们转发到 nodejs 后端。

我想从从反向代理传递到后端的 header 获取用户的电子邮件地址,并将其打印在我的主页上,这样它就会显示 Welcome XXX

现在我可以看到,如果我在我的 app.js 中添加以下内容,它会将 headers 打印到命令行,所以我知道它正在被传递,但我只是不知道javascript 我需要实现这个

app.get('/home', function (req) {
  console.log(req.headers);
});

此处找到的示例 确实向我显示了一个弹出窗口,但它没有抓取显示我需要的信息,即 'x-user':'fffffff@ffff.fff'

我也试过这段代码,但它没有为我提取它

<script>
function getClientIP(req){
    return req.headers['x-user'];
}
</script>
<h3><b><script>getClientIP();</script></b></h3>

我将此打印到 console.log,所以我知道请求中确实存在 x-user。

想通了

    <script>
    function parseHttpHeaders(httpHeaders) {
        return httpHeaders.split("\n")
         .map(x=>x.split(/: */,2))
         .filter(x=>x[0])
         .reduce((ac, x)=>{ac[x[0]] = x[1];return ac;}, {});
    }
    var req = new XMLHttpRequest();
    req.open('HEAD', document.location, false);
    req.send(null);
    var headers = parseHttpHeaders(req.getAllResponseHeaders());
    </script>

    <script>
    function here() {
     document.write(JSON.stringify(headers["x-user"]));
    }
    </script>


<h3><b><script>here();</script></b></h3>