因此,我有一个基于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用户的事实。
答案 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>