HTTP: разрешен ли IP-адрес в поле заголовка узла? - PullRequest
0 голосов
/ 14 мая 2018

Я прочитал RFC 2616 (HTTP / 1.1), и я думаю, что это не совсем понятно в связи с вышеуказанным вопросом.

Насколько я понимаю, цель поля заголовка хоста - предложить несколько доменов под одним IP-адресом.Таким образом, IP-адрес в поле заголовка хоста не имеет особого смысла.Но RFC 2616 прямо не запрещает это.

Итак, мой первый вопрос: если я запрограммирую HTTP-сервер, должен ли я выполнить проверку, отправляет ли клиент IP-адрес в поле заголовка узла, или это не нужно, потому что ни один клиент никогда не сделает этого?

Второй вопрос: если клиент отправляет IP-адрес в поле заголовка узла, должен ли сервер обрабатывать его как действительный или он должен возвращать «400 Bad Request»?

1 Ответ

0 голосов
/ 14 мая 2018

Заголовок Host может быть необработанным литералом IP.Соответствующие цитаты RFC:

  • RFC7230§5.4 : заголовок хоста
  • RFC7230§2.7 : унифицированные идентификаторы ресурсов - определяет uri-host
  • RFC3986§3.2.2 : Хост - определяет host

Определение host из RFC3986:

host = IP-literal / IPv4Address / reg-name

Что касается возвращения 400 Bad Request, я бы точно не стал.Если вы наберете "http://172.217.3.100/",, то браузер (или, по крайней мере, curl) отправит Host: 172.217.3.100 в запросе.

...