2012-06-25 25 views
9

Trong mã socket.io tôi,Không nhận địa chỉ từ xa trong khi sử dụng proxy trong socket.io

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

ip luôn trả về 127.0.0.1 và điều này là bởi vì máy chủ ngồi đằng sau một proxy. Làm cách nào để nhận địa chỉ từ xa đúng cách?

Chỉnh sửa: Tôi đang sử dụng http proxy

+0

Kiểm tra nếu client.handshake.headers [ 'x -forwarded-for '] || client.handshake.address.address; sẽ làm việc. – user644745

Trả lời

22

có, điều này phù hợp với tôi.

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

Tôi nhận được đúng địa chỉ IP từ xa và không 127.0.0.1

+3

Đã xác nhận: Đây là giải pháp làm việc đầu tiên kể từ 10 câu trả lời cuối cùng tôi tìm thấy bởi google. – DanFromGermany

+0

điều này không hiệu quả đối với tôi. Tôi đang trên một máy chủ nối mạng/sau proxy, sử dụng 1.3.2 – Rachael

+0

này chỉ làm việc cho ổ cắm 0.9. làm thế nào về cho phiên bản> 1.0? –

4

Trong phiên bản> 1.0, cú pháp tương tự như:

socket.handshake.headers['x-forwarded-for'] || socket.request.connection.remoteAddress; 
Các vấn đề liên quan