2016-10-30 1 views
1

私はクライアントのIPを取得したいと思います。私はこれで私のノードアプリ(表現)を実行します。request.ipとrequest.headersの違い['x-forwarded-for']

var ip = request.ip 

をまた、私は(私はローカルホスト上の私のスクリプトを実行したときに動作しません)、それはそのように行うことが可能だということを見た:

var ip = request.headers['x-forwarded-for'] 

それらの間の(結果)違いは何ですか?

+1

https://en.wikipedia.org/wiki/X-Forwarded-For – SLaks

+0

@SLaksありがとうございます。 Req.ipは私に "最後の"(即時)IPを与えますが、req.headers ['x-forwarded-for']は私にすべてのプロキシ+クライアントIPのシーケンスを与えますか? – kurumkan

+1

Expressはちょうど 'X-Forwarded-Proto'.split(/ \ s *、\ s * /)[0]'のように何かを行い、ヘッダから最初のものを取得するので、実際の違いはありません'req.ip'以外のものは、転送されたIPの全てではなく、最初のip *(クライアントIP)*を返します。 – adeneo

答えて

1

通常、要求がHTTPプロキシまたはロードバランサを通過するときに、'x-forwarded-for 'が設定されます。このフィールドには、プロキシへの要求を行うノードが含まれます。 IETF RFC 7239が表示されます。プロキシのユーザーエージェントに面するインターフェイスを識別します。「による」

  • "for"は、プロキシに対する要求を行うノードを識別します。

  • "host"は、プロキシが受信したホスト要求ヘッダーフィールドです。

  • 「proto」は、要求を行うために使用されたプロトコルを示します。

要求元のIPアドレスにrequest.ipは、Xフォワード-FORにおける最も左のエントリから導出されます。 Express doc.

+0

ありがとうございます。私が理解するように、クライアントの実際のIPを得るための信頼できる方法は存在しません。 – kurumkan

関連する問題