В настоящее время я использую
данные ["ip"] = socket.client.conn.remoteAddress ;;
Но это покажет мне IP-адреса cloudflare, и я не поклонник утечки ip-сервера моего сервера, так как я могу получить IP-адрес моего клиента через cloudflare?Получение клиента Ip на NODE.JS через Cloudflare
ответ
После того, как мне пришлось исследовать пару хороших часов, я узнал об этом.
socket.client.request.headers ['cf-connect-ip']
This thread говорит, что в Socket.io 1+, вы должны использовать:
socket.request.connection.remoteAddress
или:
socket.handshake.address
Но, если есть cloudfare прокси-серверы на пути (которые там предположительно), тогда это будет сообщать только истинный IP-адрес клиента, если прокси-серверы облачной сети устанавливают соответствующий заголовок на фактический IP-адрес клиента, когда они проксируют начальное HTTP-соединение, которое инициирует соединение socket.io.
Он по-прежнему заканчивается тем, что дает мне облако Ips ... данные ["ip"] = socket.request.connection.remoteAddress; // http://i.imgur.com/ZfjoZnF.png –
@Predator - Тогда проблема связана с облачной областью. Как я уже сказал в своем ответе, чтобы увидеть фактический IP-адрес клиента, прокси-сервер должен передать этот IP-адрес стандартным образом (как конкретный HTTP-заголовок), поскольку фактическое TCP-соединение, которое видит ваш сервер, принадлежит прокси-серверу, а не от клиента. – jfriend00
У облака у облаков есть свой заголовок, так как я могу использовать его для получения IP-адреса клиента? –
Какое соединение это от клиента? HTTP? socket.io? простой webSocket? – jfriend00
Это вроде как но сокет.io через TCP/HTTPS –