У меня есть серверная ферма, настроенная в IIS 8.5. Когда я проверяю HTTP_X_FORWARDED_FOR
в моем коде приложения он дает мне правильный IP-адрес, но содержит двоеточие и номер порта.
Например.
HTTP_X_FORWARDED_FOR 127.0.0.1:64031
я знаю это HTTP_X_FORWARDED_FOR
может содержать список IP-адресов, разделенных запятыми, но я никогда не слышал, чтобы он содержал номера портов.
Я не настроил явно 64031
быть номером порта везде в моей настройке. Кроме того, кажется, что номер меняется случайным образом, что наводит меня на мысль, что это какой-то внутренний номер порта, выбранный IIS для связи между «внешним» прокси-сервером веб-фермы и внутренним физическим веб-сайтом.
Я нигде в сети не видел, чтобы это было задокументировано. Это стандартное поведение? Это Microsoft Magic? Это что-то особенное для моей установки? Что именно означает этот номер порта?
Один возможность заключается в том, что IIS реализует RFC 7239, RFC, который Ну наконец то ратифицировал / создал Forwarded
HTTP-заголовок, чтобы заменить X-Forwarded-For
(и X-Forwarded-Proto
, и т.д) функциональность.
Я говорю это потому что RFC 7239, раздел 5.3 определяет формат передаваемых данных хоста; этот раздел, в свою очередь, направляет читателя к RFC 7230, раздел 5.4, который определяет синтаксис / формат для Host
заголовок. И что примечательно, так это синтаксис ABNF для Host
:
Host = uri-host [ ":" port ] ;
Обратите внимание на необязательный синтаксис для номера порта? Он говорит, что номер порта разрешается, хотя, как вы правильно заметили, это очень редко.
Так что это может быть не совсем «стандартное» поведение, но согласно RFC, это законный поведение. Может, сейчас это что-то конкретное для Microsoft? Но в приведенных выше RFC я впервые увидел упоминание формата для X-Forwarded-For
заголовок (косвенно через формат для Forwarded
заголовок), который имеет номер порта, а также IP-адрес.
Надеюсь это поможет!