42

クライアント オブジェクトにクライアント IP パラメータが見つかりません。

4

3 に答える 3

67

どちらがクライアント (Web ブラウザー) の IP アドレスを提供するのかを把握しようとして少しいじった後、答えは次のとおりです。

ws._socket.remoteAddress

reqまたは、経由でアクセスできる場合wss.on('connection', (ws, req) => {})

req.socket.remoteAddress

たとえば、これを使用して、ユーザーがどこから接続しているかを GeoIP で特定できます。

編集:

Nginx リバース プロキシ (またはその他のリバース プロキシ) の背後で Node を実行している場合は、次を使用する必要がある場合があります。

req.headers['x-forwarded-for'] || req.connection.remoteAddress

セキュリティに関する注意: ノード サーバーがリバース プロキシを介してだけでなく直接利用できる場合は、remoteAddress信頼する前にを確認することをお勧めしますx-forwarded-for。リモート アドレスは、リバース プロキシの IP である必要があります。誰かがあなたのサービスに直接電話をかけ、なりすましをする可能性がありますx-forwarded-for

于 2013-08-31T23:44:27.927 に答える
26

ソケット オブジェクトのキーを出力すると、次のようになります。

> ws._socket.address()
  { port: 8081,
    family: 2,
    address: '127.0.0.1' }

> ws._socket.remoteAddress
  '74.125.224.194'

> ws._socket.remotePort
  41435

私はドキュメントを持っていないので、これがバージョン間でどれだけうまくサポートされているかわかりません:/

于 2013-04-21T01:14:23.710 に答える