javascript - 通过nodejs将nginx headers传递给客户端

标签 javascript node.js express

我试图找出将用户的 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/

相关文章:

node.js - 使用 gulp-file-include 观看 Gulp watch

node.js - 不断向客户端发送响应

node.js - 应用程序正在运行但无法在浏览器中打开?显示页面不可用

javascript - 使用 jQuery 创建所提供内容的 Accordion

javascript - 空对象 meteor / react 的后备消息

javascript - Vue.js 中从 ul 列表中获取选中的选中值

javascript - 如何将 "time"从 Meetup API 转换为可识别的格式?

node.js - 不可变JS : Upating an object inside an array of arrays

node.js - 如何将 winston 与 typeorm 一起使用?

node.js - Node.js 的 Swig 模板中使用括号错误