Jetty возвращает HTTP / 1.1 400 неверный запрос по неверно сформированному заголовку HTTP POST. Ожидается ли это?

наличие пробела в заголовках сообщений http приводит к ПЛОХОМУ запросу ??

Я вижу это в одном из запросов: Content-Type "text / xml; c harset = utf-8"

и я получаю HTTP / 1.1 400 Bad Request

Но если тот же запрос отправлен с Content-Type "text / xml; charset = utf-8"

т.е. нет места в кодировке, это работает.

В моей реализации я не выполняю никаких проверок. Итак, я предполагаю, что мой сервер Jetty выдает неверный запрос, поскольку в кодировке есть пробел ??

Я прав или моя интерпретация неверна.

Спасибо!!


person Ikshvak    schedule 22.10.2013    source источник


Ответы (1)


Да, наличие места, куда вы его помещаете, должно привести к неверному запросу.

HTTP 1.1 - это протокол, определенный стандартом. Обратившись к стандартной документации, можно определить, что является действительным, а что нет.

Вы можете найти стандарт для HTTP / 1.1 в RFC 2616 - Протокол передачи гипертекста - HTTP / 1.1., и вы можете специально просмотреть разделы 14.17 Content-Type и 3.7 Типы мультимедиа .

По сути, вставляя пробел в "charset", вы создаете недопустимый HTTP-запрос, потому что протокол не понимает части "c" и "harset". В этом контексте они не считаются допустимым текстом.

Более того, хотя протокол знает, что кажется допустимым, а что нет, он недостаточно умен, чтобы делать выводы, как исправить даже такую ​​простую опечатку. Таким образом, ответ сервера «400 Bad Request» уместен и соответствует стандарту протокола. Как бы то ни было, вы также найдете коды состояния HTTP в RFC. Код состояния 400 неверный запрос означает:

Сервер не смог понять запрос из-за неправильного синтаксиса. Клиенту НЕ СЛЕДУЕТ повторять запрос без изменений.

т.е. не делайте этого. :)

person Chris W. Rea    schedule 22.10.2013