通过nodejs

时间:2017-02-22 22:51:44

标签: javascript node.js express

我想弄清楚将用户的geoIP信息传递给客户端javascript的最佳方法是什么。我为此配置了nginx,并且能够将信息发送到我的节点+ express服务器。

我不知道下一步是什么。从谷歌搜索我可以看到我试图发送的标题不能直接被客户端的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;
        }

2 个答案:

答案 0 :(得分:2)

经过一段时间的谷歌,我已经回答了我自己的问题。

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年前才回答这个问题!)

答案 1 :(得分:0)

你可以使用nginx add_header

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;

            add_header geoip_country_code "$geoip_country_code" always;
            add_header geoip_city "$geoip_city" always;

            proxy_pass http://app:3000;
        }