2

Express を使用して着信接続からリモート IP アドレスを取得しようとしています。Web で見つかった一般的な解決策を既に試しました。

  1. req.headers['x-forwarded-for'] / 結果: 常に未定義
  2. req.socket.remoteAddress / 結果: 外部アドレスではなく、常にゲートウェイ IP (IE: 192.168.1.1) を取得します。

手がかりはありますか?

4

2 に答える 2

0

自分のマシンの VM でアプリを実行して、これをテストしていますか? もしそうなら、あなたは正しい答えを得ています。プロキシがないため、X-Forwarded-For は空であり、VM がルーティングに使用するホスト マシン上の仮想インターフェイスが表示されます。これは、リクエストの送信元の IP です。

于 2012-05-30T09:45:41.293 に答える
-3

http://th.issh.it/ipで使用したコードを次に示します。

多分それは大文字と小文字を区別していますか?

exports.iptoy = function(req,res) {
    var clientip = req.socket.remoteAddress;
    var xffip  = req.header('X-Forwarded-For');
    var ip = xffip ? xffip : clientip;
    if(req.params.format == 'json')
        res.send({client:clientip,xforwardedfor:xffip});
    else
        res.send(ip+"\n");
}
于 2012-05-29T12:46:42.527 に答える