HTTPヘッダーの改行スタイル


161

HTTPヘッダーでの使用に適した改行スタイル:\r\nまたは\n、およびその理由

回答:


224

\r\nこれは、プロトコル仕様で改行として定義されているためです。RFC2616は、セクション2.2、「基本ルール」の冒頭で、明確に述べています。

CR = <US-ASCII CR、キャリッジリターン(13)>
LF = <US-ASCII LF、ラインフィード(10)>
HTTP / 1.1は、エンティティを除くすべてのプロトコル要素の行末マーカーとしてシーケンスCR LFを定義します-体

RFC2616はRFC7230によって技術的に廃止されましたが、大幅な変更は行われず、CRLFがセクション3の区切り文字として再び呼び出され、RFCはRFC5234の付録B.1を参照して「CRLF」をと定義しています%x0D %x0A

ただし、人々がどんな目的でも標準を破ることを認識して、セクション19.3に「許容範囲の規定」があります(これは正しい順序を繰り返します)。

メッセージヘッダーフィールドの行終端記号は、シーケンスCRLFです。ただし、そのようなヘッダーを解析するときは、アプリケーションで単一のLFを行末記号として認識し、先頭のCRを無視することをお勧めします。

新しいRFC7230では、§3.5

start-lineおよびheaderフィールドの行ターミネーターはシーケンスCRLFですが、受信者は単一のLFを行ターミネーターとして認識し、先行するCRを無視してもかまいません(MAY)。

したがって、悪者になりたい場合や、RFCのルールに違反しない限り、を使用してください\r\n


@フレッド:いいえ、あまりにも明白であるようなものがあります-不必要な繰り返し、不必要に同じ情報を繰り返す、無意味な繰り返しはメッセージを曇らせます。特に、同じことが引用されている場合は、仕様からも同様です。
Piskvorは、2014

2
良い明確な答え。これがまさにStackOverflowの最適な用途です。ブログや記事が不要で役に立たない混乱を招くことなく、シンプルで明確な質問に対するシンプルで明確な回答が得られます。
Miles Rout、2013年

@MilesRout:ありがとう:)
Piskvorは、2014

2
@Pacerier:そのようなことはまったく言及していません。これは基本的に「これがHTTPの唯一の有効な構文です」と指定しているため、それ以外は無効な構文です。もちろん、あなたは可能性があなたを止めることができ、誰もがありません、あなたが望むすべてのRFCに違反する- 、ちょうど何かをしかし、あなたは、技術的にもはやHTTPクライアントを実装していないその種に類似のルックス;)
Piskvor左構築

2
RFC2616を廃止したRFC7230には、セクション3.5
悲しみ

22

\ r \ n RFC 2616で規定されているため(セクション2.2、「基本ルール」):

HTTP / 1.1は、
エンティティ本体を除くすべてのプロトコル要素の行末マーカーとしてシーケンスCR LFを定義しています(
耐性のあるアプリケーションについては、付録19.3を参照してください)。エンティティ本体内の行末マーカーは、セクション3.7で説明されているように、関連するメディアタイプによって定義されます。

   CRLF           = CR LF

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.