回答:
\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を無視することをお勧めします。
start-lineおよびheaderフィールドの行ターミネーターはシーケンスCRLFですが、受信者は単一のLFを行ターミネーターとして認識し、先行するCRを無視してもかまいません(MAY)。
したがって、悪者になりたい場合や、RFCのルールに違反しない限り、を使用してください\r\n
。
CRLF( "\ r \ n")(ブラウザはRFC2616に準拠しているため)