使用JavaScript打印网页的HTTP标头

时间:2018-07-11 09:09:06

标签: javascript nginx header html-helper

因此,我有一个基于nodejs框架构建的web应用程序。目前,我正在使用NGINX反向代理,该代理使用OIDC进行身份验证。用户通过身份验证后,便会将其转发到nodejs后端。

我想从反向代理传递到后端的标头中获取用户的电子邮件地址,并将其打印在我的主页上,这样它将显示“欢迎XXX”

现在我可以看到,如果我在app.js中添加以下内容,它将在命令行中打印标题,因此我知道它已通过,但我不需要实现此目的所需的JavaScript

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

Accessing the web page's HTTP Headers in JavaScript处找到的示例确实向我展示了一个弹出窗口,但没有抓取显示我需要的信息,即“ x用户”:“ fffffff@ffff.fff”

我也尝试了这段代码,但是它不是我自己想要的

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

我已将此打印到console.log,因此我知道请求中存在x用户的事实。

1 个答案:

答案 0 :(得分:0)

想通了

    <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>