我试图找出将用户的 geoIP 信息传递给客户端 JavaScript 的最佳方法。我已经为此配置了 nginx,并且能够将信息发送到我的 Node + Express 服务器。
我不知道下一步是什么。通过谷歌搜索,我可以看到我尝试发送的 header 无法直接被客户端的 js 读取。
这就是我所拥有的——
Nodejs--
router.get('/', function(req, res, next) {
res.setHeader("geoip_country_code", req.headers.geoip_country_code);
res.setHeader("geoip_city", req.headers.geoip_city);
res.render('index', { title: 'bla' });
console.log(req.headers);
});
Nginx --
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header GEOIP_COUNTRY_CODE $geoip_country_code;
proxy_set_header GEOIP_CITY $geoip_city;
proxy_set_header GEOIP_LATITUDE $geoip_latitude;
proxy_set_header GEOIP_LONGITUDE $geoip_longitude;
proxy_pass http://app:3000;
}
最佳答案
经过更多的谷歌搜索后,我回答了我自己的问题。
res.locals是在 Express 中执行此操作的最佳方法。
所以现在我在服务器上正在做 -
router.get('/', function(req, res, next) {
res.locals.geoip_country_code = req.headers.geoip_country_code;
res.locals.geoip_city = req.headers.geoip_city;
res.render('index', { title: 'bla' });
console.log(req.headers);
});
在我的 Jade 模板中,我有 --
script(type='text/javascript').
var geoip_city =!{JSON.stringify(geoip_city)}
var geoip_country_code = !{JSON.stringify(geoip_country_code)}
来源:so/10919650/ (有点吓人,这个问题大约 5 年前就已经得到了回答!)
关于javascript - 通过nodejs将nginx headers传递给客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42403809/