[12] 電子メールのヘッダー内では元来あらゆる字句間に空白や注釈が認められていました。 電子メールに強い影響を受けた HTTP でも、多くの場所で空白を認めていました。 電子メールでも HTTP でも、仕様の改訂により徐々に空白の使用方法が限定的になってきています。
[1] Linear white space (線形空白)。
[2]
RFC 822 で使われておりましたが、
RFC 2822 では FWS
(や CFWS
) に全面的に置き換えられています。
[55]
FWS
は、空白を表しています。
U+0020
や U+0009
を使うことができるのに加えて、
直後に U+0020
や U+0009
が続く場合に、 U+000D
U+000A
(CRLF) を使うことができます。これは折り畳みと呼ばれているもので、
1つのヘッダーを複数行で表したい時に使います。
[56]
CFWS
は、 FWS
に加えて、注釈を使うことが認められるものです。
[5] >>4 3.1.4. は字句間に linear-white-space
を挿入して良いとしています。
[7] >>6 で U+0009
の使用は勧められないとされています。
[10] RFC 2822 では WSP のみの行の使用は禁止されていますが、理解できなければなりません >>9。
[21] 折り畳まれた2行目以降の部分に :
という文字が含まれていると、へんちくりんな MTA が勝手にその直後に SP
を挿入しちゃったりすることがあるんだそうです。 (そんなのが21世紀になっても生き残っているとは!)
[22] >>21 参考 : はじめてのにっき(2003-09-05) http://hajimeteno.alib.jp/diary/?date=20030905, IW:mew-dist:23997
[23] >>21-22 特に multipart/*
の boundary
引数なんかがそれに引っ掛かると深刻なので、 Mew では境界文字列に :
があったら _
に置き換えるみたいです。
[13] HTTP における空白は、 OWS (省略可能空白)、 RWS (必須空白)、BWS (「悪い」空白) に分類されています >>31。
[32] また、行折り畳みとして、 改行と空白を続けることで欄値を複数行に分割することもできました。 ただし現在はその生成が禁止されています。
[39] 空白は欄値中の色々な場所で認められています。場所により、 OWS、RWS、BWS のいずれかが指定されています。 SP と指定されていることもあります。
[25] 欄値には行折り畳み (obs-fold
)
が含まれることがあります >>24。ただし廃止された構文とされており、
生成してはなりません。
[34] 空白 (OWS, RWS, BWS) は、いずれも任意の文字数の SP や HTAB です >>31。
[35] OWS は、可読性のために好ましい時は SP 1つとして生成するべきです。 それ以外では、非妥当だったり望まなかったりするプロトコル要素をその場でメッセージをフィルタリングするために必要な場合を除き、 生成するべきではありません。 >>31
[37] RWS は、 SP 1つとして生成するべきです >>31。 そうでなくても必ず1文字は必要です >>31。
[42] 鯖は、 message/http
以外の要求メッセージの行折り畳みを受信した場合、
400
を (できれば行折り畳みは受け付けられない旨の表現と共に)
返すか、または行折り畳みを1つ以上の SP
に置き換えてから解釈するか、下流に転送するかしなければなりません
>>31。
[401] 串や関門は、 message/http
以外の応答メッセージの行折り畳みを受信した場合、
そのメッセージを捨てて 502
を
(できれば行折り畳みは受け付けられない旨の表現と共に) 返すか、
または行折り畳みを1つ以上の SP
に置き換えてから解釈するか、下流に転送するかしなければなりません
>>31。
[503] 利用者エージェントは、 message/http
以外の応答メッセージの行折り畳みを受信した場合、
行折り畳みを1つ以上の SP
に置き換えてから解釈しなければなりません >>31。
[27] RFC 2616 世代までは、構文上 LWS
ではなく SP
を使って定義されているところでは、行折り畳みが使えないとも解釈できました。
例えば、
... は SP を使って定義されています。
[504] RFC 7230 は行折り畳みを SP に置き換えてから解釈が行われるとしており、 >>27 のような箇所でも行折り畳みが使えると明確になっています。
[33] RFC 7230 の開発途中に出版された RFC 6265, RFC 6454 は、 RFC 7230 とは少し違った OWS を定義していました。 いずれも定義は微妙に異なっていますが、実態としては同じような規定です。
SP = <space character> HT = <horizontal tab character> NL = <newline> LWSP = SP | HT | NL
[505] Introduce concept-header-list-combine for XMLHttpRequest · 6965d6e · whatwg/fetch ( ( 版)) https://github.com/whatwg/fetch/commit/6965d6e4e9cc2705f1ca2b230a77747cc1fa2626
[45] Reference the new HTTP RFCs. Normalize header values. Fixes #99, #100… · whatwg/fetch@6c00fe2 ( 版) https://github.com/whatwg/fetch/commit/6c00fe28e7a361d2b7e0dda776ebccfaa4c439a5
[46] Fetch Standard ( 版) https://fetch.spec.whatwg.org/#http-whitespace-bytes
[47] Wireless Application Protocol Wireless Session Protocol Specification ( 版) http://technical.openmobilealliance.org/tech/affiliates/wap/WAP-230-WSP-20010705-a.pdf
[48] Use `,` rather than `, ` for the combine operation (annevk著, ) https://github.com/whatwg/fetch/commit/c21f8bd50ef9e919e6b1003a6dfbe29a7195d57a
[50] Stop lowercasing header names (annevk著, ) https://github.com/whatwg/fetch/commit/5869c43a27fff06c6dfc228fe1288018f7f2168d
[51] Change combine and combined value to use 0x2C 0x20 (#504) (annevk著, ) https://github.com/whatwg/fetch/commit/d9307bde55a32dee1a82207202f712fc3c8fde8b
[52] Align header handling with Fetch (annevk著, ) https://github.com/whatwg/xhr/commit/a6e79810a381b8e336570da797967c4b34e0c6b1
[53] Get multiple headers as an aray rather than a combined value? · Issue #506 · whatwg/fetch () https://github.com/whatwg/fetch/issues/506
[54] Release Notes for Safari Technology Preview 26 | WebKit () https://webkit.org/blog/7474/release-notes-for-safari-technology-preview-26/
[57] Define parsing for X-Content-Type-Options: nosniff in detail (annevk著, ) https://github.com/whatwg/fetch/commit/32c7b1c76a43ea96b8663628b891b339553ae114
[58] What does "combined value" return for a name not in the header list? · Issue #752 · whatwg/fetch () https://github.com/whatwg/fetch/issues/752
[59] Define parsing for X-Content-Type-Options in detail by annevk · Pull Request #818 · whatwg/fetch () https://github.com/whatwg/fetch/pull/818
[60] Add HTTP whitespace back for MIME types (annevk著, ) https://github.com/whatwg/fetch/commit/a243f1f8af10f78ead83953bfb0f1c6ee21cb8a1
[61] Add HTTP whitespace back for MIME types by annevk · Pull Request #828 · whatwg/fetch () https://github.com/whatwg/fetch/pull/828
[62] Use HTTP rather than ASCII whitespace by annevk · Pull Request #90 · whatwg/mimesniff () https://github.com/whatwg/mimesniff/pull/90
[63] Use HTTP whitespace rather than ASCII whitespace (annevk著, ) https://github.com/whatwg/mimesniff/commit/126286ab2dcf3e2d541349ed93539a88bf394ad5
[64] MIME type parsing: stop treating 0x0C as whitespace · Issue #89 · whatwg/mimesniff () https://github.com/whatwg/mimesniff/issues/89
message/http
以外では非推奨 >>40、message/http
を意図した場合を除き禁止 >>40 ともされており、完全に禁止されているわけではないとも解釈できます。