#?SuikaWiki/0.9 [14] [CODE[Content-Type:]] 欄は、その[[実体]]の型を指定する欄です。 型とは文字列 ([[text/plain]]) か画像 ([[image/png]], [[image/jpeg]] など) か [[XHTML]] ([[application/xhtml+xml]]) か、それとも・・・というものです。 [15] 初め [[RFC1049]] が定義していましたが、これと互換性のない [[MIME]] が再定義した形式が普及し、 [[HTTP]] などのプロトコルでも採用されています。 MIME では型の指定に Internet [[媒体型]]を使います。 (Internet [RUBYB[媒体型] [Media Type]] のことは MIME [RUBY[型] [タイプ]]とか Content-Type (内容型) とかとも呼ばれます。) *Content-Type: 領域の定義 -[[RFC1049のContent-Type:領域の定義]] RFC 1049 の CT: は MIME の CT: とは互換性がありません。 また、 1049 の型の全てに対応する Internet (MIME) 媒体型が 定義されたわけでもありません。 幾ら RFC 1049 が実際にはあまり使われなかったとはいえ、 ひどい処遇です。 -[[RFC1341のContent-Type:領域の定義]] -[[RFC1521のContent-Type:領域の定義]] -[[RFC2045のContent-Type:領域の定義]] -son-of-RFC1036のContent-Type:領域の定義 -[[draft-usefor-articleのContent-Type:領域の定義]] son-of-RFC1036 は RFC 1341 を参照していて、別途 CT: 領域を定義していません。 usefor-article もそうです。 -[[HTTPのContent-Type:領域の定義]] -[[CGIのContent-Type:領域の定義]] HTTP の定義は RFC 2045 と同じ物ですが、 RFC 2231 の拡張に 追随していません。 CGI の定義は HTTP と同じです。 -[[MIMEのparameter値拡張]] RFC 2184, RFC 2231 により Content-Type: 領域の parameter の定義などが 修訂されました。実際にはあまり実装されていません。 *Content-Type: の内容の区別 MIME-Version: があれば MIME CT:, なければ RFC 1049 CT: だそーです。 とある頭領域が他の頭領域の解釈に影響しないていう原則に 反してるような気もしますが。 (それを言うと X-Face なんかもそうかも。) See [[他の頭領域の解釈に影響する(かもしれない)頭領域]] *パラメーター [8] [CODE[Content-Type:]] 欄のパラメーターは、欄そのものの属性ではなく[[媒体型]]の属性です。 ですからパラメーターの名前や値の意味は媒体型の定義により決まります。 但しパラメーター名は [[token]] であり、大文字・小文字を区別しません。 パラメーターの値は大文字・小文字の区別の有無は定義に依存します。 [CODE[x-]] パラメーターも存在しません。この扱いも媒体型毎の定義に依存しているのでしょう。 [[#comment]] **比較的共通なパラメーター [16] >>8 というのが原則ですが、実際にはどの[[媒体型]]でも比較的共通に使われているパラメーターも幾つかあります。 それらの多くは、実際には [[Content-Disposition:]] 欄のパラメーターとする方が意味的に適切ですが、 種々の理由により [CODE(MIME)[Content-Type:]] 欄で使われている(た)のです。 ,charset ,charset , ,See [[charsetパラメーター]] [MIME] ,name , ,非推奨 ,[[本体]]の[[ファイル名]] [[[MIME]]] ,x-mac-creator, ,非標準 ,Mac での応用 ,x-mac-type , ,非標準 ,Mac での型 ,x-unix-mode,4DIGIT ,非標準 ,Un*x での [[permission]] [9] [[charsetパラメーター]]は、主に [[text/*媒体型]]で使われます。 比較的多くの媒体型で定義されてはいるものの、共通のパラメーターではありません。 また、中には解釈が異なる型もあるので注意が必要です。 [CODE[name]] パラメーターは古い MIME で [[application/octet-stream媒体型]]など一部のみに定義されていましたが、どの型でも使えると誤解されたため、未だに使っている実装があります。 正しくは [[Content-Disposition:欄]]の [CODE[filename]] パラメーターを使います。 [10] [CODE[x-unix-mode]] は、 [[un*x]] で使われている file の permission の数値を表すもので、どの規格でも規定されていませんが、例えば [[AppleMail]] が使っているようです。例えば [CODE[0777]] という値が入ります。 [CODE[x-mac-creator]], [CODE[x-mac-type]] 両パラメーターは Macintosh でのファイル属性を記録するものです。 [[application/applefile媒体型]>>1]をご覧下さい。 [11] >>10 の3つのパラメーターは、本来 [CODE[Content-Disposition:]] 欄に入れるべき情報でしょう。 [[#comment]] **パラメーター不認識問題 [1] 主に古い時代の [[HTTP]] [[UA]] において、パラメーターの存在を知らないためにうまく扱えないことがあります。 単に無視するだけならまだ良いのですが、中にはパラメーターも含めて一つの[[媒体型]]とみなし、例えば [CODE[text/html;charset=iso-2022-jp]] という媒体型と認識し、保存しますか? と聞いてきたりします。 [2] [[Mosaic]] variant にこういうのがいるみたいです。 古い Mosaic は対応していなかったんでしょうか? 同じ 1996年の Mosaic でも、 MosaicView ([[NEC]]) はちゃんと扱えるのに Infomosaic ([[富士通]]) は扱えなかったりします。 [3] ちなみに、古い [[NN]] (2以前) は [[charsetパラメーター]]の扱いにまた別の問題があります。 - [12] 古い [[UA]] には、 [SAMP[text/html;charset=iso-2022-jp]] ではなく [SAMP[text/html; charset=iso-2022-jp]] になっていないと認識しない困ったちゃんがいるらしいです。 - [13] [[application/x-www-form-urlencoded]>>1] にも同様の問題が存在します。おそらく潜在的に少なからぬ数の [[UA]] (おそらく大多数は特定目的の tool か古代の [[WWW]] ブラウザ。) が、パラメータの存在により誤動作又は動作しなくなる虞があります。 [[#comment]] *HTTP/1.1 (RFC 2616 14.17 Content-Type >The Content-Type entity-header field indicates the media type of the entity-body sent to the recipient or, in the case of the HEAD method, the media type that would have been sent had the request been a GET. [5] Content-Type 実体頭欄は受信者に送られた, 又は [[HEAD]] 方式の場合では [[GET]] 要求の場合に送られる[[実体本体]]の[[媒体型]]を示します。 -[6] Content-Type = "Content-Type" ":" media-type >Media types are defined in section 3.7. An example of the field is -[7] Content-Type: text/html; charset=ISO-8859-4 >Further discussion of methods for identifying the media type of an entity is provided in section 7.2.1. *RFC 2326 (RTSP) 12.16 Content-Type >See [H14.18]. Note that the content types suitable for RTSP are likely to be restricted in practice to presentation descriptions and parameter-value types. [4] [H14.18] 参照。なお、 [[RTSP]] で適切な内容型は、表現記述及びパラメーター値型の習慣により制限されるでしょう。 *RFC の部分の License [[RFCのライセンス]] *メモ - [1] [WEAK[2002-11-15 (金) 17:27]] ''[[名無しさん]]'': RFC 1049 は (MIME が出たかなり後まで) Internet Standard でしたが、いつのまにか histrical に降格していました。 - [2] [[MIME]] では Content-Type: 欄の[[本体]]の値が[[媒体型]]です。 - [3] >>2 より媒体型のことを Content-Type あるいは内容型と呼ぶことがあります。まあ間違いではありません。好んでそう呼ぶ人も中にはいます。