2012-06-25 28 views
9

在我socket.io代碼使用代理,沒有得到遠程地址,而在socket.io

socket.sockets.on('connection', function(client){ 
    var ip = client.handshake.address.address; 
    .. 
} 

IP總是返回127.0.0.1,這是因爲服務器坐在後面的代理。 如何正確獲取遠程地址?

編輯:我使用HTTP代理

+0

察看client.handshake.headers ['X -forwarded-for'] || client.handshake.address.address;將工作。 – user644745

回答

22

沒錯,這是爲我工作。

client.handshake.headers['x-forwarded-for'] || client.handshake.address.address; 

我正確地獲得遠程IP地址,而不是127.0.0.1

+3

確認:這是自Google發現的最後10個答案以來的第一個工作解決方案。 – DanFromGermany

+0

這不適合我。我在網絡服務器/代理服務器後面,使用1.3.2 – Rachael

+0

這個只適用於套接字0.9。對於版本> 1.0的情況如何? –

4

在版> 1.0,語法是相似的:

socket.handshake.headers['x-forwarded-for'] || socket.request.connection.remoteAddress;