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タイプは、「タイプ名/サブタイプ名」の形式で構成されています。たとえば、HTML文書の MIMEタイプは、"text/html" です。"text" の部分は MIMEタイプと呼ばれ、"html" の部分は MIMEサブタイプと呼ばれます。タイプとサブタイプの間は、常にスラッシュ(/)で区切られています。一つのタイプ名には多数のサブタイプ名が定義されています。しかし、"html" のようなサブタイプ名の部分は限定的です。以下にウェブページで良く利用される MIMEタイプをいくつか挙げましょう。
これらの MIMEタイプに対する拡張子は、ウェブサーバーの管理者が編集した httpd.conf というファイルによって既定されています。ただし、サーバソフトウェアに Apache を利用しているウェブサーバーでは、.htaccess(ドットエイチティーアクセス)を使うことで、レンタルサーバーの形式でスペースを借りている各ウェブサイトの管理者の方でも、どの拡張子をどの MIMEタイプで提供するかといった動作をディレクトリ単位で設定することができます。詳しい設定方法は、MIMEタイプ・文字コードの設定を参照してください。
.htaccess に設定された情報は、UA がウェブコンテンツをリクエストした際に、直接 UA とウェブサーバの間で交わされる HTTPヘッダ情報となります。
たとえば、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" の文字コードで提供するようにレスポンス(応答)するのです。
ウェブサーバーは、UA が正しくファイルの種類を読み取ることができるように、ファイルの MIMEタイプを通知する必要があります。そこで、拡張子がファイル名に含まれていない未知のファイルがあった場合、DefaultTypeディレクティブによって設定された MIMEタイプをデフォルトとして提供します。
DefaultType "text/html; charset=utf-8"
DefaultType "text/css; charset=Shift_JIS"
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ディレクティブは、そのディレクトリ以下にあるすべてのファイルが指定された MIMEタイプで提供するように設定します。
ForceType image/gif
たとえば、 GIFファイルだけの専用ディレクトリがあったとして、すべてのファイルに拡張子 ".gif" をつけて終わらせたくはない場合に上記のように設定するのが適しています。ただし、ForceTypeディレクティブは、DefaultTypeディレクティブと違って、未知のファイルだけでなく、指定された MIMEタイプで提供することが決められている拡張子をもつファイルも含めすべての MIMEタイプの関連付けを上書き(オーバーライド)することに注意してください。
UA がリクエストした際に HTTPヘッダの追加情報として働きかける MIMEタイプの設定について。
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属性は、object要素に指定することができます。codetype属性に指定された MIMEタイプは、object要素の classid属性で指定されたオブジェクトを実行する前に事前に、その UA の環境下で実行可能かどうかを判断をつけるように UA に働きかけます。
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属性は、form要素に指定することができます。フォームに入力されたデータをウェブサーバーに送信する際に、enctype属性で指定された MIMEタイプの形式にあわせて、データのエンコード(符号化)を行ったり、アップロードされるファイルにファイル名を付けたり、文字化けの起きないように Content-Typeヘッダに charsetパラメータをつけるなどの処理を行うように UA に働きかけます。
type属性は、a要素, link要素, object要素, param要素, script要素, style要素に指定することができます。
a要素, link要素の type属性は、リンク先のリソース(情報資源)の MIMEタイプを UA が正しく解釈できるように働きかけます。object要素の type属性は data属性で指定されているオブジェクトの MIMEタイプを UA がサポートしていない場合に、指定されたオブジェクトを実行する前に事前にデータをロードすることのないように UA に働きかけます。param要素の type属性は、param要素の value属性にオブジェクトの所在である URI が指定された場合に、type属性に指定された MIMEタイプで、指定されている URI のオブジェクトを発見するように UA に働きかけます。script要素, style要素の type属性は、それぞれスクリプト言語とスタイル言語に何を使用しているかを MIMEタイプで示し、これを正しく解釈できるように UA に働きかけます。ウェブサーバーの管理者が記述している 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);
http://w3g.jp/others/data/mimetypes実績:大阪学院 入試サイト New! / 三田市民病院 / 神戸女学院大学 入試サイト / 釣りサンデー