Go to information

MIMEタイプ

1992年、IETF(インターネット技術特別調査委員会)にて、MIME(Multipurpose Internet Mail Extension)という規格が提唱されました。MIME は、電子メールのデータ量に対する制限を取り払い、従来のテキスト・メールではできなかった英語以外の文字も送れるようにしたり、さらに文字以外にも画像ファイルなどのバイナリデータも添付ファイルとして送れるようにした規格です。こうして現在では、電子メールで漢字かな混じり文や添付ファイルが使えるようになりました。

そして現在、この MIME がウェブサーバと User Agent(ユーザーエージェント)がデータを送受信する際に使われている通信手順である HTTP を利用する場合にも適用されています。ウェブ上で利用されるファイルには、拡張子(識別子)があり、拡張子とファイルのデータ型(データの種類)の関連付けを行っているのが MIMEタイプ(MIME type)です。また、WWW の世界では、MIMEタイプのことを Mediaタイプ(Media type)と呼ぶこともあります。本文書では、UA がウェブコンテンツをリクエストした際に HTTPヘッダ情報、または HTTPヘッダの追加情報として働きかける MIMEタイプの設定について解説します。

MIMEタイプの構成

MIMEタイプは、「タイプ名/サブタイプ名」の形式で構成されています。たとえば、HTML文書の MIMEタイプは、"text/html" です。"text" の部分は MIMEタイプと呼ばれ、"html" の部分は MIMEサブタイプと呼ばれます。タイプとサブタイプの間は、常にスラッシュ(/)で区切られています。一つのタイプ名には多数のサブタイプ名が定義されています。しかし、"html" のようなサブタイプ名の部分は限定的です。以下にウェブページで良く利用される MIMEタイプをいくつか挙げましょう。

text/html
HTMLファイル
text/xml, application/xml
XMLファイル
application/xhtml+xml
XHTMLファイル
text/css
CSSファイル
application/x-shockwave-flash
Flash Shockwaveファイル
text/javascript
JavaScriptファイル
text/plain
単純テキストファイル
image/gif
GIF画像ファイル
image/jpeg
JPEG画像ファイル
image/png
PNG画像ファイル
audio/midi
MIDIサウンドファイル
video/mpeg
MPEG映像ファイル
video/x-msvideo
Microsoft AVIファイル
application/pdf
Adobe PDFファイル
application/java
JAVAアプレットファイル
application/atom+xml
ATOM配信フォーマット
application/rss+xml
RSS配信フォーマット

これらの MIMEタイプに対する拡張子は、ウェブサーバーの管理者が編集した httpd.conf というファイルによって既定されています。ただし、サーバソフトウェアに Apache を利用しているウェブサーバーでは、.htaccess(ドットエイチティーアクセス)を使うことで、レンタルサーバーの形式でスペースを借りている各ウェブサイトの管理者の方でも、どの拡張子をどの MIMEタイプで提供するかといった動作をディレクトリ単位で設定することができます。詳しい設定方法は、MIMEタイプ・文字コードの設定を参照してください。

HTTPヘッダ情報として働きかける MIMEタイプの設定

.htaccess に設定された情報は、UA がウェブコンテンツをリクエストした際に、直接 UA とウェブサーバの間で交わされる HTTPヘッダ情報となります。

AddTypeディレクティブ

たとえば、XHTML1.1 の規格で作成した文書は、"application/xhtml+xml" の MIMEタイプで提供する必要があります。一般的に httpd.conf には ".html"、または ".htm" を拡張子にもつファイルを "text/html" の MIMEタイプで提供するように設定されています。そこで、.htacess を使って ".html"、または ".htm" を拡張子にもつファイルであっても、XHTML1.1 の規格で作成した XHTML文書である "application/xhtml+xml" の MIMEタイプで提供できるように既定されていた拡張子と MIMEタイプの対応を上書き(オーバーライド)することができます。

AddType "application/xhtml+xml; charset=utf-8" html htm

これは、AddTypeディレクティブにより ".html"、または ".htm" を拡張子にもつファイルは、HTTPヘッダ情報で "application/xhtml+xml" の MIMEタイプで提供するようにした設定です。また、文字コードが関係するファイルの種類については、ダブルクォーテーション(")で括って、MIMEタイプの指定に続いてセミコロン(;)で区切り、「chraset=文字コード」の形式で文字コードを明示することができます。 この設定により UA が ".html"、または ".htm" を拡張子にもつファイルをリクエスト(要求)した際に、ウェブサーバーは "application/xhtml+xml" の MIMEタイプに "utf-8" の文字コードで提供するようにレスポンス(応答)するのです。

DefaultTypeディレクティブ

ウェブサーバーは、UA が正しくファイルの種類を読み取ることができるように、ファイルの MIMEタイプを通知する必要があります。そこで、拡張子がファイル名に含まれていない未知のファイルがあった場合、DefaultTypeディレクティブによって設定された MIMEタイプをデフォルトとして提供します。

/public_html .htaccess
DefaultType "text/html; charset=utf-8"
/public_html/style .htaccess
DefaultType "text/css; charset=Shift_JIS"
/public_html/script .htaccess
DefaultType text/javascript

まず、1番目の設定は、/public_htmlディレクトリ以下のディレクトリに拡張子がファイル名に含まれていない未知のファイルがあった場合、"text/html" の MIMEタイプに "utf-8" の文字コードで提供し、2番目の設定は、/public_html/styleディレクトリ以下のディレクトリに拡張子がファイル名に含まれていない未知のファイルがあった場合、"text/css" の MIMEタイプに "Shift_JIS" の文字コードで提供し、3番目の設定は、/public_html/scriptディレクトリ以下のディレクトリに拡張子がファイル名に含まれていない未知のファイルがあった場合、"text/javascript" の MIMEタイプで提供するように設定しています。ただし、DefaultTypeディレクティブの設定は、あくまでもデフォルトの設定であって、他に MIMEタイプを決定できる ForceTypeディレクティブの設定があれば、その指定によって上書きされることになります。

ForceTypeディレクティブ

ForceTypeディレクティブは、そのディレクトリ以下にあるすべてのファイルが指定された MIMEタイプで提供するように設定します。

ForceType image/gif

たとえば、 GIFファイルだけの専用ディレクトリがあったとして、すべてのファイルに拡張子 ".gif" をつけて終わらせたくはない場合に上記のように設定するのが適しています。ただし、ForceTypeディレクティブは、DefaultTypeディレクティブと違って、未知のファイルだけでなく、指定された MIMEタイプで提供することが決められている拡張子をもつファイルも含めすべての MIMEタイプの関連付けを上書き(オーバーライド)することに注意してください。

追加情報として働きかける MIMEタイプの設定

UA がリクエストした際に HTTPヘッダの追加情報として働きかける MIMEタイプの設定について。

accept属性

accept属性は、form要素, input要素に指定することができます。input要素の type属性に "file" が指定されている場合に、ウェブサーバーが受け取ることのできる MIMEタイプを限定するように UA に働きかけます。たとえば、CGIプログラムに画像ファイルのみをアップロードできるようにする場合には、次のように記述します。

<input name="imgfile" type="file"
accept="image/gif,image/jpeg,image/png">

これは、"image/gif", "image/jpeg", "image/png" 以外の MIMEタイプのファイルがアップロードに指定された場合に、警告用のダイアログを出すように UA に働きかけることが期待されます(期待されるというのは、現在 accept属性に対応している視覚ブラウザがないという意味です)。

codetype属性

codetype属性は、object要素に指定することができます。codetype属性に指定された MIMEタイプは、object要素の classid属性で指定されたオブジェクトを実行する前に事前に、その UA の環境下で実行可能かどうかを判断をつけるように UA に働きかけます。

content属性

content属性は、meta要素に指定することができます。meta要素の http-equiv属性で指定された Content-Type, Content-Style-Type, Content-Script-Type の各値に MIMEタイプを指定します。たとえば、「http-equiv="Content-Type" content="text/html; charset=utf-8"」であれば、ウェブページの MIMEタイプは "text/html" で、文字コードは "utf-8" というように、HTTPヘッダの追加情報として UA に働きかけます。

enctype属性

enctype属性は、form要素に指定することができます。フォームに入力されたデータをウェブサーバーに送信する際に、enctype属性で指定された MIMEタイプの形式にあわせて、データのエンコード(符号化)を行ったり、アップロードされるファイルにファイル名を付けたり、文字化けの起きないように Content-Typeヘッダに charsetパラメータをつけるなどの処理を行うように UA に働きかけます。

type属性

type属性は、a要素, link要素, object要素, param要素, script要素, style要素に指定することができます。

拡張子(識別子)と MIMEタイプの一覧

ウェブサーバーの管理者が記述している httpd.conf には、一般的に次のような拡張子と MIMEタイプが定義されています。

/*        Define a basic set of suffixes
**        ------------------------------
**
**        The first suffix for a type is that used for temporary files
**        of that type.
*/
HTAddtype(".mime",   "www/mime",                      "binary", 1.0);
HTAddtype(".bin",    "application/octet-stream",      "binary", 1.0);
HTAddtype(".oda",    "application/oda",               "binary", 1.0);
HTAddtype(".pdf",    "application/pdf",               "binary", 1.0);
HTAddtype(".ai",     "application/postscript",        "8bit",   0.5);
HTAddtype(".PS",     "application/postscript",        "8bit",   0.8);
HTAddtype(".eps",    "application/postscript",        "8bit",   0.8);
HTAddtype(".ps",     "application/postscript",        "8bit",   0.8);
HTAddtype(".rtf",    "application/x-rtf",             "7bit",   1.0);
HTAddtype(".csh",    "application/x-csh",             "7bit",   0.5);
HTAddtype(".dvi",    "application/x-dvi",             "binary", 1.0);
HTAddtype(".hdf",    "application/x-hdf",             "binary", 1.0);
HTAddtype(".latex",  "application/x-latex",           "8bit",   1.0);
HTAddtype(".nc",     "application/x-netcdf",          "binary", 1.0);
HTAddtype(".cdf",    "application/x-netcdf",          "binary", 1.0);
HTAddtype(".sh",     "application/x-sh",              "7bit",   0.5);
HTAddtype(".tcl",    "application/x-tcl",             "7bit",   0.5);
HTAddtype(".tex",    "application/x-tex",             "8bit",   1.0);
HTAddtype(".texi",   "application/x-texinfo",         "7bit",   1.0);
HTAddtype(".texinfo","application/x-texinfo",         "7bit",   1.0);
HTAddtype(".t",      "application/x-troff",           "7bit",   0.5);
HTAddtype(".roff",   "application/x-troff",           "7bit",   0.5);
HTAddtype(".tr",     "application/x-troff",           "7bit",   0.5);
HTAddtype(".man",    "application/x-troff-man",       "7bit",   0.5);
HTAddtype(".me",     "application/x-troff-me",        "7bit",   0.5);
HTAddtype(".ms",     "application/x-troff-ms",        "7bit",   0.5);
HTAddtype(".src",    "application/x-wais-source",     "7bit",   1.0);
HTAddtype(".bcpio",  "application/x-bcpio",           "binary", 1.0);
HTAddtype(".cpio",   "application/x-cpio",            "binary", 1.0);
HTAddtype(".gtar",   "application/x-gtar",            "binary", 1.0);
HTAddtype(".shar",   "application/x-shar",            "8bit",   1.0);
HTAddtype(".sv4cpio","application/x-sv4cpio",         "binary", 1.0);
HTAddtype(".sv4crc", "application/x-sv4crc",          "binary", 1.0);
/*
** The following are neutral CAE formats:
*/
HTAddtype(".igs",    "application/iges",              "binary", 1.0);
HTAddtype(".iges",   "application/iges",              "binary", 1.0);
HTAddtype(".IGS",    "application/iges",              "binary", 1.0);
HTAddtype(".IGES",   "application/iges",              "binary", 1.0);
HTAddtype(".stp",    "application/STEP",              "8bit"  , 1.0);
HTAddtype(".STP",    "application/STEP",              "8bit"  , 1.0);
HTAddtype(".step",   "application/STEP",              "8bit"  , 1.0);
HTAddtype(".STEP",   "application/STEP",              "8bit"  , 1.0);
HTAddtype(".dxf",    "application/dxf",               "binary", 1.0);
HTAddtype(".DXF",    "application/dxf",               "binary", 1.0);
HTAddtype(".vda",    "application/vda",               "binary", 1.0);
HTAddtype(".VDA",    "application/vda",               "binary", 1.0);
HTAddtype(".set",    "application/set",               "8bit",   1.0);
HTAddtype(".SET",    "application/set",               "8bit",   1.0);
HTAddtype(".stl",    "application/SLA",               "8bit",   1.0);
HTAddtype(".STL",    "application/SLA",               "8bit",   1.0);
/*
** The following are vendor-specific CAD-formats commonly
** used at CERN and in HEP institutes:
*/
HTAddtype(".dwg",   "application/acad",               "binary", 1.0);
HTAddtype(".DWG",   "application/acad",               "binary", 1.0);
HTAddtype(".SOL",   "application/solids",             "binary", 1.0);
HTAddtype(".DRW",   "application/drafting",           "binary", 1.0);
HTAddtype(".prt",   "application/pro_eng",            "binary", 1.0);
HTAddtype(".PRT",   "application/pro_eng",            "binary", 1.0);
HTAddtype(".unv",   "application/i-deas",             "binary", 1.0);
HTAddtype(".UNV",   "application/i-deas",             "binary", 1.0);
HTAddtype(".CCAD",  "application/clariscad",          "binary", 1.0);
HTAddtype(".snd",   "audio/basic",                    "binary", 1.0);
HTAddtype(".au",    "audio/basic",                    "binary", 1.0);
HTAddtype(".aiff",  "audio/x-aiff",                   "binary", 1.0);
HTAddtype(".aifc",  "audio/x-aiff",                   "binary", 1.0);
HTAddtype(".aif",   "audio/x-aiff",                   "binary", 1.0);
HTAddtype(".wav",   "audio/x-wav",                    "binary", 1.0);
HTAddtype(".gif",   "image/gif",                      "binary", 1.0);
HTAddtype(".ief",   "image/ief",                      "binary", 1.0);
HTAddtype(".jpg",   "image/jpeg",                     "binary", 1.0);
HTAddtype(".JPG",   "image/jpeg",                     "binary", 1.0);
HTAddtype(".JPE",   "image/jpeg",                     "binary", 1.0);
HTAddtype(".jpe",   "image/jpeg",                     "binary", 1.0);
HTAddtype(".JPEG",  "image/jpeg",                     "binary", 1.0);
HTAddtype(".jpeg",  "image/jpeg",                     "binary", 1.0);
HTAddtype(".tif",   "image/tiff",                     "binary", 1.0);
HTAddtype(".tiff",  "image/tiff",                     "binary", 1.0);
HTAddtype(".ras",   "image/cmu-raster",               "binary", 1.0);
HTAddtype(".pnm",   "image/x-portable-anymap",        "binary", 1.0);
HTAddtype(".pbm",   "image/x-portable-bitmap",        "binary", 1.0);
HTAddtype(".pgm",   "image/x-portable-graymap",       "binary", 1.0);
HTAddtype(".ppm",   "image/x-portable-pixmap",        "binary", 1.0);
HTAddtype(".rgb",   "image/x-rgb",                    "binary", 1.0);
HTAddtype(".xbm",   "image/x-xbitmap",                "7bit",   1.0);
HTAddtype(".xpm",   "image/x-xpixmap",                "binary", 1.0);
HTAddtype(".xwd",   "image/x-xwindowdump",            "binary", 1.0);
HTAddtype(".html",  "text/html",                      "8bit",   1.0);
HTAddtype(".htm",   "text/html",                      "8bit",   1.0);
HTAddtype(".htmls", "text/html",                      "8bit",   1.0);
HTAddtype(".c",     "text/plain",                     "7bit",   0.5);
HTAddtype(".h",     "text/plain",                     "7bit",   0.5);
HTAddtype(".C",     "text/plain",                     "7bit",   0.5);
HTAddtype(".cc",    "text/plain",                     "7bit",   0.5);
HTAddtype(".hh",    "text/plain",                     "7bit",   0.5);
HTAddtype(".m",     "text/plain",                     "7bit",   0.5);
HTAddtype(".f90",   "text/plain",                     "7bit",   0.5);
HTAddtype(".txt",   "text/plain",                     "7bit",   0.5);
HTAddtype(".rtx",   "text/richtext",                  "7bit",   1.0);
HTAddtype(".tsv",   "text/tab-separated-values",      "7bit",   1.0);
HTAddtype(".etx",   "text/x-setext",                  "7bit",   0.9);
HTAddtype(".MPG",   "video/mpeg",                     "binary", 1.0);
HTAddtype(".mpg",   "video/mpeg",                     "binary", 1.0);
HTAddtype(".MPE",   "video/mpeg",                     "binary", 1.0);
HTAddtype(".mpe",   "video/mpeg",                     "binary", 1.0);
HTAddtype(".MPEG",  "video/mpeg",                     "binary", 1.0);
HTAddtype(".mpeg",  "video/mpeg",                     "binary", 1.0);
HTAddtype(".qt",    "video/quicktime",                "binary", 1.0);
HTAddtype(".mov",   "video/quicktime",                "binary", 1.0);
HTAddtype(".avi",   "video/x-msvideo",                "binary", 1.0);
HTAddtype(".movie", "video/x-sgi-movie",              "binary", 1.0);
HTAddtype(".gz",    "multipart/x-gzip",               "binary", 1.0);
HTAddtype(".zip",   "multipart/x-zip",                "binary", 1.0);
HTAddtype(".tar",   "multipart/x-tar",                "binary", 1.0);
HTAddtype(".ustar", "multipart/x-ustar",              "binary", 1.0);
HTAddtype("*.*",    "www/unknown",                    "binary", 0.2);
HTAddtype("*",      "www/unknown",                    "binary", 0.2);
HTAddEncoding(".Z", "x-compress",        1.0);
HTAddEncoding(".gz","x-gzip",            1.0);
現在位置
  1. W3G
  2. Others
  3. 資料
  4. MIMEタイプ
ナビゲーション
ステータス情報
作者
上田 遼
公開
2007-01-21T21:36:53+09:00
更新
2008-12-29T04:19:17+09:00
URI
http://w3g.jp/others/data/mimetypes
検索

実績:大阪学院 入試サイト New! / 三田市民病院 / 神戸女学院大学 入試サイト / 釣りサンデー