Установка PHP7.0 из sid на jessie

Соответствующий RFC, Протокол передачи гипертекста (HTTP / 1.1): Синтаксис сообщений и маршрутизация содержит ответ на ваш вопрос: каждая строка HTTP-запроса должна заканчиваться CR / LF.


Грамматика для формата сообщения HTTP указывает, что каждая строка заголовка должна заканчиваться символом возврата каретки ( 0x0d в ASCII), за которым следует символ перевода строки ( 0x0a ):

  HTTP-сообщение = начальная строка 
 * (поле заголовка CRLF) 
CRLF 
 [тело сообщения] 
 

Это более четко выражено в описании строки запроса :

Строка запроса начинается с токена метода, за которым следует один пробел (SP), цель запроса, еще один пробел. (SP), версия протокола и заканчивается на CRLF.

  request-line = method SP request-target SP HTTP-version CRLF 
 

Поскольку curl специально разработан для HTTP-запросов, он уже использует соответствующие окончания строк при выполнении HTTP-запросы. Однако netcat - это программа более общего назначения.Как утилита Unix, она по умолчанию использует символы перевода строки для окончания строки, что требует от пользователя обеспечения правильного завершения строк.

Вы можете использовать утилиту unix2dos для преобразования файла, содержащего заголовки запроса, для использования окончаний возврата каретки / перевода строки.

Если вы хотите ввести HTTP-запрос вручную и у вас установлена ​​последняя версия nc , вы должны использовать его параметр -C , чтобы использовать CRLF для окончания строк:

nc -C www.youtypeitwepostit.com 80

Кстати, стоит отметить, что большинство популярных Интернет-протоколов (например, SMTP) используют окончания строк CR / LF.


Обратите внимание, что некоторые веб-серверы (например, Apache) более снисходительны и будут принимать строки запроса, которые заканчиваются только символом перевода строки. Спецификация HTTP допускает это, как указано в разделе Устойчивость синтаксического анализа сообщений :

Хотя терминатор строки для полей начальной строки и заголовка - это последовательность CRLF, получатель МОЖЕТ распознать одиночный LF как символ конца строки и игнорируйте любой предыдущий CR.

11
06.01.2016, 10:55
0 ответов

Теги

Похожие вопросы