Стиль разрыва строки заголовка 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