Стиль разрыва строки заголовка HTTP - PullRequest
150 голосов
/ 22 апреля 2011

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

Ответы [ 3 ]

205 голосов
/ 22 апреля 2011

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

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

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

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

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

22 голосов
/ 22 апреля 2011

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

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

   CRLF           = CR LF
13 голосов
/ 22 апреля 2011

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

...