Re: 400 Bad Request при http:// в Host

Валентин Бартенев vbart at nginx.com
Fri Sep 5 11:11:28 UTC 2014


On Friday 05 September 2014 05:59:08 kilgur wrote:
> Версия nginx: 1.6.1
> При запросе вида
> GET http://somesite.ru/ HTTP/1.1
> Host: http://somesite
> nginx отвечает вышеуказанной ошибкой (400 Bad Request)
> Строки в поле Host с любым "мусором" успешно игнорируются веб-сервером, но
> вот имя сайта с указанием протокола приводит к ошибке.
> 
> В описании протокола есть пункт (5.2), который сообщает
> "If Request-URI is an absoluteURI, the host is part of the Request-URI. Any
> Host header field value in the request MUST be ignored."
> Т.е. любое содержимое заголовка Host должно быть проигнорировано...

Вы цитируете устаревший RFC, да ещё часть про роутинг, а не про корректность.

На самом деле: http://tools.ietf.org/html/rfc7230#section-5.4

   A server MUST respond with a 400 (Bad Request) status code to any
   HTTP/1.1 request message that lacks a Host header field and to any
   request message that contains more than one Host header field or a
   Host header field with an invalid field-value.


> 
> На старом сервере древняя 0.6.30 спокойно воспринимает такой заголовок.
> 
> Есть какая-либо возможность настроить nginx так, чтобы он не выдавал ошибку
> 400?
> 

Нет.

--
Валентин Бартенев


Подробная информация о списке рассылки nginx-ru