var ip = req.headers['x-forwarded-for'] ||
req.connection.remoteAddress ||
req.socket.remoteAddress ||
(req.connection.socket ? req.connection.socket.remoteAddress : null);
에서에 하나 이상의 IP 주소를 얻을 수 있습니다 req.headers['x-forwarded-for']
. 또한x-forwarded-for
오류가 발생할 수 헤더가 항상 설정되지는 않습니다.
필드의 일반적인 형식은 다음과 같습니다.
x 전달 : client, proxy1, proxy2, proxy3
여기서 값은 쉼표 + 공백으로 구분 된 IP 주소 목록이며, 가장 왼쪽은 원래 클라이언트이며 요청을받은 각 연속 프록시는 요청을받은 IP 주소를 추가합니다. 이 예에서 요청은 proxy1
,proxy2
다음 proxy3
. proxy3
요청의 원격 주소로 나타납니다.
이것은 Arnav Gupta 가 Martin 이 x-forwarded-for
설정하지 않은 경우에 대한 주석에서 제안한 수정 사항으로 제안한 솔루션 입니다.
var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() ||
req.connection.remoteAddress ||
req.socket.remoteAddress ||
req.connection.socket.remoteAddress
req.ip
- 소스 expressjs.com/en/api.html#req.ip