2015-10-03 1 views
0

В настоящее время я использую

данные ["ip"] = socket.client.conn.remoteAddress ;;

Но это покажет мне IP-адреса cloudflare, и я не поклонник утечки ip-сервера моего сервера, так как я могу получить IP-адрес моего клиента через cloudflare?Получение клиента Ip на NODE.JS через Cloudflare

+0

Какое соединение это от клиента? HTTP? socket.io? простой webSocket? – jfriend00

+0

Это вроде как но сокет.io через TCP/HTTPS –

ответ

1

После того, как мне пришлось исследовать пару хороших часов, я узнал об этом.
socket.client.request.headers ['cf-connect-ip']

0

This thread говорит, что в Socket.io 1+, вы должны использовать:

socket.request.connection.remoteAddress 

или:

socket.handshake.address 

Но, если есть cloudfare прокси-серверы на пути (которые там предположительно), тогда это будет сообщать только истинный IP-адрес клиента, если прокси-серверы облачной сети устанавливают соответствующий заголовок на фактический IP-адрес клиента, когда они проксируют начальное HTTP-соединение, которое инициирует соединение socket.io.

+0

Он по-прежнему заканчивается тем, что дает мне облако Ips ... данные ["ip"] = socket.request.connection.remoteAddress; // http://i.imgur.com/ZfjoZnF.png –

+0

@Predator - Тогда проблема связана с облачной областью. Как я уже сказал в своем ответе, чтобы увидеть фактический IP-адрес клиента, прокси-сервер должен передать этот IP-адрес стандартным образом (как конкретный HTTP-заголовок), поскольку фактическое TCP-соединение, которое видит ваш сервер, принадлежит прокси-серверу, а не от клиента. – jfriend00

+0

У облака у облаков есть свой заголовок, так как я могу использовать его для получения IP-адреса клиента? –