2017-02-22 3 views
0

私はクライアント側のjavascriptにユーザーのgeoIP情報を渡すのが最善の方法を見つけようとしています。私はこれのためのnginxを設定して、私のノード+エクスプレスサーバーに情報を送信することができます。nginxヘッダーをnodejs経由でクライアントに渡す

私は次のステップが何であるか分かりません。私は送信しようとしているヘッダがクライアント側の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

をもう少し後にgoogle-fu私自身の質問に答えました。

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); 
}); 

そして、私のジェイドテンプレートの

は私が持っている -

script(type='text/javascript'). 
    var geoip_city =!{JSON.stringify(geoip_city)} 
    var geoip_country_code = !{JSON.stringify(geoip_country_code)} 

ソース:so/10919650/(ビットは、これは、ほぼ5年答えたことを威圧前に!)

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; 
     } 
+0

これは私がすでに使っている 'proxy_set_header'とどう違うのですか?この方法でクライアントjsからアクセスできますか? – charsi

+1

'proxy_set_header'はクライアントからサーバへヘッダを追加しますが、' add_header'はサーバからクライアントへヘッダを追加します。 –

+0

ああ私はこれを間違った方法でやっているのがわかります。クライアントjsからnginxヘッダを問い合わせることはできますか? – charsi

関連する問題