Стиль разрыва строки заголовка HTTP

Какой стиль разрыва строки предпочтителен для использования в заголовках HTTP: \r\n или \n и почему?

Ответ 1

\r\n, поскольку он определен как разрыв строки в спецификации протокола. RFC2616 заявляет в начале раздела 2.2 (Основные правила (!)) довольно однозначно:

CR = < US-ASCII CR, возврат каретки (13) >
 LF = < US-ASCII LF, линейная подача (10) >
HTTP/1.1 определяет последовательность CR LF как маркер конца строки для всех элементов протокола, за исключением тела объекта

Однако, признавая, что люди нарушают стандарт для любых целей, в разделе раздела 19.3 имеется "допущение о допуске" (обратите внимание, что он повторяет правильную последовательность ):

Терминатор строки для полей заголовка сообщения представляет собой последовательность CRLF. Тем не менее, мы рекомендуем, чтобы при анализе таких заголовков приложения распознавали один LF в качестве ограничителя строк и игнорировали ведущий CR.

Поэтому, если вы не хотите быть злым или иным образом нарушать правила RFC, используйте \r\n.

Ответ 2

\ r\n, потому что RFC 2616 так говорит (раздел 2.2, "Основные правила" ):

HTTP/1.1 определяет последовательность CR LF как маркер конца строки для всех протокольных элементов, кроме (см. приложение 19.3 для
толерантные приложения). маркер конца строки в пределах сущность-тело определяется его связанный тип носителя, как описано в раздел 3.7.

   CRLF           = CR LF

Ответ 3

CRLF ( "\ r\n" ), поскольку браузеры следуют RFC2616.