[48] 仕様書:
- [[HTML 2.0]]: [[RFC 1866]] 5.2.5. Associated Meta-information: META
[[#comment]]
[51]
HTTP 鯖は、 [CODE(HTMLa)[http-equiv]] 属性付きの
[CODE(HTMLe)[meta]] 要素を使って頭を作っても構いません
[SRC[RFC 1866 5.2.5, HTML 4]]。ただし、その方法は規定されていませんし、
使用することが強制されてもいません [SRC[RFC 1866 5.2.5]]。
しかし、 [CODE(HTMLa)[http-equiv]] なき [CODE(HTMLe)[meta]]
要素を生成に使ってはなりません [SRC[RFC 1866 5.2.5]]。
また、 [CODE(HTTP)[[[Date]]]], [CODE(HTTP)[[[Server]]]],
[CODE(HTTP)[[[Last-Modified]]]] のような鯖が生成する情報に関する
[CODE(HTMLe)[meta]] 情報は捨てても構いません [SRC[RFC 1866 5.2.5]]。
[50] [[M$DN]] の記事によると、
[CODE(HTTP)[[[Pragma]]]] とかでは HTML でも HTTP 頭でも認識するけど
[CODE(HTTP)[[[Cache-Control]]]] は HTTP 頭じゃないと認識しないようにわざとしているとか。
だからまったく何も考えていないで行き当たりばったりというわけでもない、と。
[[#comment]]
* 用例のある、正当な頭欄の名前
[25] ここで「正当」とは、 [[HTTP]]
などの仕様書や原案で規定・提案されているものや、
HTTP 頭欄として何らかの取り扱いを行う実装が見つかっているもののことを言います。
- [26] [CODE(HTTP)[[[Content-Type]]]]
- [27] [CODE(HTTP)[[[Content-Style-Type]]]]
- [28] [CODE(HTTP)[[[Content-Script-Type]]]]
- [29] [CODE(HTTP)[[[Default-Style]]]]
- [30] [CODE(HTTP)[[[Expires]]]]
- [31] [CODE(HTTP)[[[Refresh]]]]
- [32] [CODE(HTTP)[[[Pragma]]]]
- [33] [CODE(HTTP)[[[Cache-Control]]]]
- [34] [CODE(HTTP)[[[Content-Language]]]]
- [35] [CODE(HTTP)[[[Window-Target]]]]
- [36] [CODE(HTTP)[[[Content-Script-Language]]]] ([CODE(HTTP)[Content-Script-Type]] の旧名)
- [37] [CODE(HTTP)[[[Content-Version]]]]
- [38] [CODE(HTTP)[[[Ext-Cache]]]]
- [39] [CODE(HTTP)[[[MSThemeCompatible]]]]
- [40] [CODE(HTTP)[[[Site-Enter]]]]
- [41] [CODE(HTTP)[[[Site-Exit]]]]
- [42] [CODE(HTTP)[[[Keywords]]]]
- [43] [CODE(HTTP)[[[SHOE:]]]]
- [44] [CODE(HTTP)[[[Page-Enter]]]]
- [45] [CODE(HTTP)[[[Page-Exit]]]]
- [46] [CODE(HTTP)[[[Reply-To]]]]
- [47] [CODE(HTTP)[[[ImageToolbar]]]]
[[#form:'%text(label=>値,size=>10,id=>value); %text(label=>参考,size=>20,id=>comment);':'-[%index;] [CODE(HTTP)[[[%text(source=>value);]]]]%text(prefix=>" (",suffix=>")",source=>comment);']]
* 明らかに name 属性と勘違いしてる値を挙げろ!
- [2] 勝手に馬鹿が捏造した [[HTTP]] [[頭欄]]の名前を挙げる!
- [1] [CODE(HTML)[author]] (ぐぐるとかなりでてくる!)
- [3] [CODE(HTML)[keywords]]
- [4] [CODE(HTML)[description]]
- [5] [CODE(HTML)[generator]]
- [6] [CODE(HTML)[copyright]]
- [8] [CODE(HTML)[Author/ Creator]] ([CODE(HTML)[NAME="GENERATOR" CONTENT="Adobe PageMill 3.0 Win"]] と書いてあるが、 [[PageMill]] がやったのか著者がやったのか不明。)
- [9] [CODE(HTML)[distribution]] (値 [CODE(HTML)[global]] >>8)
- [10] [CODE(HTML)[resource-type]] (値 [CODE(HTML)[document]] >>8)
- [11] [CODE(HTML)[robots]]
- [12] [CODE(HTML)[authoring_tool]]
- [13] [CODE(HTML)[resource_type]] (>>10 と同じらしい。 >>9 も >>10 も値は [[CaseInsensible]] のようだ。非 PageMill の用例あり)
- [14] [CODE(HTML)[DC.Descrioption]]
- [15] [CODE(HTML)[title]] (HTTP にも [[Title:]] 欄がありましたが。。。)
- [16] [CODE(HTML)[revisit-after]] (値 [CODE(HTML)[30 days]]。 [[Retry-After:]] 欄の人間向け版?)
- [17] [CODE(HTML)[rating]] (値 [CODE(HTML)[general]])
- [18] [CODE(HTML)[owner]] (自由文)
- [19] [CODE(HTML)[abstract]] (自由文)
- [20] [CODE(HTML)[security]] (値 [CODE(HTML)[public]])
[[#form:'%text(label=>値,size=>10,id=>value); %text(label=>参考,size=>20,id=>comment);':'-[%index;] [CODE(HTML)[%text(source=>value);]]%text(prefix=>" (",suffix=>")",source=>comment);']]
* 例
[49] 使用例 [SRC[RFC 1866 5.2.5]]
[PRE(HTML)[
]PRE]
これから生成した HTTP 応答の頭欄の例 [SRC[RFC 1866 5.2.5]]
[PRE(HTTP)[
Expires: Tue, 04 Dec 1993 21:29:02 GMT
Keywords: Fred, Barney
Reply-to: fielding@ics.uci.edu (Roy Fielding)
]PRE]
[[#comment]]
* メモ
- [7] >>1 ''HTML META for Creating HTTP Headers - HTML Code Tutorial'' は [CODE(HTTP)[Author:]] 欄が HTTP にあると断言してるんだが、歴史的に実在してるんだろうか?
[21] [CODE(HTTP)[Author]] の例と [CODE(HTTP)[Keywords]] の例を
metatag I-D で発見。後者はニュースの [CODE(822)[[[Keywords]]:]]
との絡みもあるし、更なる調査が必要の予感
[22] にしても、現代では [CODE(HTMLa)[[[name]]]] と
[CODE(HTMLa)[http-equiv]] ははっきり区別されている
(大昔はそうではなかったが)。
それなのに両者の違いが分からず適当に使ってる香具師が多いこと。
[23] [[XHTML 2.0]] ではぜひとも古き時代の遺物
[CODE(HTMLa)[http-equiv]] は削除して欲しいね。 [[HTTP]] [[header]]
まで著者がいじれて当然の世界にとっとなって欲しい。
[24] >>2 謎のブラウザ新機能の制御のためになぜか [CODE(HTMLa)[http-equiv]] 使う [[M$]] も何とかして下さい。
香具師のおかげで意味不明な [[HTTP]] header
(例: [CODE(HTTP)[[[MSThemeCompatible]]:]] 欄) がどれだけ増えたか。
[55]
[[WMLScript]] は [CODE[meta http equiv]] [[pragma]] を規定しています。
([[名無しさん]] [sage])
[56]
[[WML]] の [CODE(XMLe)[[[meta]]]] 要素にも
[CODE(XMLa)[http-equiv]] 属性があります。
([[名無しさん]] [sage])
[57]
[[SSML]] の [CODE(XMLe)[[[meta]]]] 要素にも
[CODE(XMLa)[http-equiv]] 属性があります。
([[名無しさん]] [sage])
[58]
[[SRGS]] の XML 形の [CODE(XMLe)[[[meta]]]]
要素にも [CODE(XMLa)[http-equiv]] があります。
[[ABNF]] 形にも [CODE[http-equiv]] 鍵語があります。
この仕様書の使用例には例によってあの間違った構文の [CODE(HTTP)[[[Expires]]]]
欄を [CODE(XMLa)[http-equiv]]
で使っているのが載っています。
こうやっておかしなものが拡大再生産されているのは怖いなあ。
([[名無しさん]] [sage])
[59]
[[CCXML 1.0]] の [CODE(XMLe)[[[meta]]]] 要素にも
[CODE(HTMLa)[[[http-equiv]]]] 属性があります。
[CITE[Voice Browser Call Control: CCXML Version 1.0]]
([[名無しさん]] [sage] [WEAK[2005-06-29 23:19:14 +00:00]])
[[#comment]]
* [CODE(HTMLa)[http-equiv]] Considered Harmful
[52] [CODE(HTMLa)[http-equiv]] 属性を使った [CODE(HTMLe)[meta]]
要素によって HTML 文書に HTTP 頭欄の元となる情報を用意しておくことは、
手軽であり、元々はそう悪い考えではありませんでした。
しかし、実際にはこの方法はほとんど成功しなかったどころか、
一部では誤った方向で使われています。
[CODE(HTMLa)[http-equiv]] は歴史的遺物であり、
'''使用するべきではありません'''。
[53]
とかいうことを書こうと思って、どうせもう書いている人がいるだろうとも思って検索してみたら、ありました。
[CITE[Robots Mailing List Archive: Re: HEAD request [was Re: Server name in /robots.txt]]]
こちらの文書は [[HTML 2.0]] ができる当時のもので、
まだ [CODE(HTMLa)[http-equiv]] が正しく機能する望みがいくらかはあった時のものです。
ですからあまり深刻ではありません。
[54] 現代版 Considered Harmful の骨子:
- [CODE(HTML)[http-equiv=Content-Type]] は箱の中の鍵、一時しのぎ
→ 既に必要性は低下している
- UA が解釈するのが当然とみなされている
(仕様がそもそもおかしい、
ものによって UA が解釈したりしなかったり)
- HTTP との整合性
(標準化の動きすらない頭欄が使われている、
複数の指定があるときの扱い、
HTTP が使われていない時の扱い、
指定できるべきではない頭欄の扱い、
使用できる文字の種類)