내가 사용자의 IP 주소를 얻기 위해이 코드를 사용 Socket.IO에 :Cloud9 IDE에서 사용자의 실제 IP 주소를 얻기 Node.js를 +에서
var clientIP = socket.handshake.headers['x-forwarded-for'] || socket.handshake.address.address;
을하지만 결과가 잘못된 것입니다. 나는 다음과 같은 결과를이 값을 D와 가지고 'console.log
:
socket.handshake.address.address
이 (127.xxx)
x-forwarded-for
이 cloud9의 프록시 중 하나입니다 분명 내부 IP입니다 (107.23.232.64, 54.236.78.114, 107.23.123.140) .
명백하게 이중 프록시가 사용되고 프록시 계층 중 하나가 'x-forwarded-for'
헤더를 생성하지 않습니다. cloud9에서는 사용자의 실제 IP가 절대적으로 불가능합니까? 그것은 내 프로젝트에 필수적입니다.
어떻게 든 프록시되는 경우 100 % 정확도로 사용자의 원격 IP를 가져올 수 없습니다. 다양한 HTTP 헤더에서 얻을 수있는 모든 단일 IP는 쉽게 위조/변경 가능합니다. $ _SERVER [ 'REMOTE_ADDR']만이 원격지에서도 신뢰할 수 있으며 심지어 사용자의 패킷이 사이트로 들어가기 전에 왔던 마지막 컴퓨터 일뿐입니다. –