17

HTTP ヘッダーでは、改行はヘッダー内のフィールドを区切るためのトークンです。

しかし、カスタム フィールドで改行リテラルを送信したくない場合は、どのようにエスケープすればよいでしょうか?

4

5 に答える 5

10

この質問に対する実際の答えは、改行をエンコードするための標準がないということです。

URL エンコーディングや Base64 などのバイナリからテキストへのエンコーディングを使用できますが、送信者と受信者の両方が同じメソッドを実装している場合にのみ機能することは明らかです。


RFC 2616 では、ヘッダー値を複数の行に「折りたたむ」(つまりラップする) ことができましたが、改行は単一のスペース文字として扱われ、解析されたフィールド値の一部ではありませんでした。

ただし、その仕様は、折り畳みを禁止するRFC 7230によって廃止されました。

歴史的に、HTTP ヘッダー フィールドの値は、追加の各行の前に少なくとも 1 つのスペースまたは水平タブ(obs-fold) を付けることで、複数の行に拡張することができました。この仕様は、メディア タイプ(セクション 8.3.1 )内を除いて、
そのような行の折り畳みを推奨しません。送信者は、改行を含むメッセージを生成してはなりません ( MUST NOT )。message/http

HTTP ヘッダー フィールド値の改行の標準は確立されておらず、確立されたこともありません。

于 2015-10-05T16:28:00.340 に答える
4

HTTP はASCII-のみであり、改行などは許可されていないという考えです。送信者と受信者の両方があなたのエンコーディングを解釈できる場合は、好きなようにエンコードできます。これが、DNS 国際名がHostヘッダーで処理される方法です (PUNYCODE と呼ばれます)。

簡単な答えは次のとおりです。送信者と受信者の両方を制御しない限り、そうではありません。

于 2011-12-28T01:45:22.790 に答える