Чи може X-FORWARDED-FOR містити кілька IP-адрес


13

Може X-FORWARDED-FORмістити кілька IP-адрес? Якщо так, то чому? Показовий приклад був би чудовим.

Відповіді:


22

Так, якщо запит є ланцюговим через декілька проксі-серверів, то кожен проксі повинен додати IP попереднього до існуючого заголовка X-Forwarded-For, щоб зберегти весь ланцюг.


Я ніколи не бачив проксі, який додає до існуючого значення. Будь-яке цитування для цього?
ceejayoz

4
Особистий досвід. Я витратив багато часу на аналіз заголовків X-Forwarded-For, отриманих на великому веб-сайті, і насправді не рідкість бачити в заголовку дві-три IP-адреси.
Майк Скотт

4
Також дивіться статтю Вікіпедії тут: en.m.wikipedia.org/wiki/X-Forwarded-For . У ньому йдеться про "значення - це список розділених комою + пробілом IP-адрес. Найбільш зліва - це оригінальний клієнт, і кожен наступний проксі-сервер, який передав запит, додаючи IP-адресу, звідки отримав запит".
Майк Скотт

Цікаво, чи це один проксі-сервер, який робить це. Захоплююче. На мій досвід, nginx не справляється з цим.
ceejayoz

1
@ceejayoz, якщо ви використовуєте проекти з відкритим кодом, наприклад nginx, і пишете свій заголовок як "SET xff = clientIP", він ніколи не додається. Більшість комерційних приладів або додають, або встановлюють, якщо атрибут недоступний networkinghowtos.com/howto/…
Jacob Evans

2

Від https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For

X-Forwarded-For: <client>, <proxy1>, <proxy2>

Якщо запит проходить через кілька проксі-серверів, відображаються IP-адреси кожного наступного проксі-сервера. Це означає, що найправіша IP-адреса - це IP-адреса останнього проксі-сервера, а сама ліва IP-адреса - IP-адреса вихідного клієнта.

Приклади:

X-Forwarded-For: 2001:db8:85a3:8d3:1319:8a2e:370:7348

X-Forwarded-For: 203.0.113.195

X-Forwarded-For: 203.0.113.195, 70.41.3.18, 150.172.238.178
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.