1. ホーム
  2. http

[解決済み] HTTPヘッダーの改行スタイル

2022-04-30 13:37:38

質問

HTTPヘッダで使用する場合、どのような改行スタイルが望ましいですか。 \r\n または \n また、その理由は?

どのように解決するのですか?

\r\n というのは、プロトコルの仕様で改行として定義されているからです。 RFC2616では、2.2節「"Basic Rules"」の冒頭で次のように記述しています。 というように、非常に明確に定義されています。

<ブロッククオート

CR = <US-ASCII CR、キャリッジリターン(13)>

LF = <US-ASCII LF, linefeed (10)>

HTTP/1.1 では、entity-body を除くすべてのプロトコル要素で、行末マーカーとして CR LF というシーケンスが定義されています。

RFC2616はRFC7230によって技術的に廃止されましたが、劇的な変更はなく、再びCRLFをデリミタとして呼び出し セクション3 であり、そのRFCが参照しているのは RFC5234、付録B.1 を使用して、"CRLF" を次のように定義しています。 %x0D %x0A .

しかし、どのような目的であれ、人々は規格を破ることを認識し、quot;許容規定"があります。 第19.3項 (を再掲していることに注意)。 正しい のシーケンス)。

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

新しい RFC7230, §3.5

開始行とヘッダーフィールドの行終端はCRLFシーケンスであるが、受信者は単一のLFを行終端として認識し、先行するCRを無視してもよい[MAY]。

したがって、Evilになりたいとか、RFCの規則を破りたいとかいうのでなければ \r\n .