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

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

3 ответа

Решение

\r\nпотому что это определено как разрыв строки в спецификации протокола. RFC2616 утверждает в начале Раздела 2.2 (Основные правила (!)) Совершенно однозначно:

CR =
LF =
HTTP / 1.1 определяет последовательность CR LF как маркер конца строки для всех элементов протокола, кроме тела объекта

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

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

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

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

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

   CRLF           = CR LF

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

Другие вопросы по тегам