7

私を混乱させるのは、HTTP ヘッダーのデコードです。

ヘッダーの例:
Some-Header: "quoted string?"; *utf-8'en'Weirdness

ヘッダーを引用できますか? "a自体のエンコーディングはどうですか?は'有効な引用符ですか? セミコロン ( ;) の意味は何ですか? HTTP ヘッダーの値パーサーは MIME パーサーと見なすことができますか?

多くの野生のヘッダーフィールドを透過的に処理および変更する必要がある透過プロキシを作成しています。そのため、フォーマットについて非常に詳細な情報が必要です。

4

1 に答える 1

8

ヘッダー値を引用できますか?

RFC 5987のparameter生成がヘッダー値の主要部分に適用されるということであれば、いいえ。

Some-Header: "foo"; bar*=utf-8'en'bof

ここで、ヘッダー値の主要部分はおそらく引用符を含むでしょう"foo"が...

セミコロン(;)の意味は何ですか?

特定の処理は、名前付きヘッダーごとに個別に定義されます。したがって、セミコロンは、たとえば、には重要ですが、には重要ではありContent-DispositionませんContent-Length

明らかに、これは非常に満足のいく解決策ではありませんが、それは私たちが立ち往生しているものです。

多くのインザワイルドヘッダーフィールドを透過的に処理および変更する必要がある透過プロキシを作成しています。

これらを一般的な方法で処理することはできません。可能な各ヘッダーの形式を知っている必要があります。認識できないものについては、ヘッダー値を分解しようとしないでください。実際、現時点ではRFC 5987をサポートしているものはほとんどないため、RFC5987を非常に便利に処理できる可能性はほとんどありません。

今日の現状では、ヘッダー値の非ASCII文字は、エンコードされているか生であるかにかかわらず、クロスブラウザーで使用するには十分に機能していません。

幸いなことに、それらが必要になることはめったにありません。唯一の実際に一般的な使用例は、の非ASCIIファイル名ですContent-Dispositionが、代わりにファイル名を末尾のURLパス部分に配置することで回避するのが簡単です。

HTTPヘッダーの値パーサーはMIMEパーサーと見なすことができますか?

いいえ。HTTPは一般にMIMEおよびRFC822ファミリの標準から大きく借用していますが、822ファミリの一部ではありません。822のように見える独自のヘッダー用の低レベルの文法がありますが、完全には互換性がありません。任意のMIME機能はHTTPで使用できません。それらを明示的にHTTPにドラッグするための標準化メカニズムが必要です。これは、RFC 5987(RFC 2231(の一部))です。

(他のいくつかの違いについては、RFC 2616のセクション19.4を参照してください。)

理論的には、multipartフォームの送信822ファミリの一部であり、そこでRFC2231エンコーディングを使用できるはずです。しかし現実には、ブラウザもそれをサポートしていません。

于 2011-12-22T23:16:02.910 に答える