Migaro. 技術Tips

                       

ミガロ. 製品の技術情報
IBMiの活用に役立つ情報を掲載!


Webサーバー(IBM HTTP Server、IHS)MIMEタイプ設定

MIMEタイプはWebサーバーがファイルの拡張子によって、クライアントのブラウザーがどのように処理を行うのかを決めるための設定です。つまり、Webサーバーに配置したファイルをどのように扱うのかを設定しています。Tipsでは、Windows版 IBM HTTP Server(IHS)でのMIMEタイプ設定についてご紹介します。

MIMEタイプとは?

MIMEタイプはWebサーバー上で設定する拡張子設定のようなものです。WebサーバーはブラウザにMIMEタイプを使用することでファイル形式を通知しています。ブラウザはMIMEタイプの設定により受け取るファイル形式を判別しています。

例えば、MIMEタイプapplication/pdf .pdfのように設定があるとブラウザは拡張子.pdfのファイルを直接ブラウザ上で表示します。

IBM HTTP Server(IHS)とは?

IBM HTTP Server(IHS)はIBMがApache HTTP Serverをベースに開発したWebサーバーです。WindowsやIBMi、Linuxでも利用することができる、クラスプラットフォーム環境で稼働可能なソフトウェア。

IHSには、IBMが開発しているWebSphere Application Server(WAS)というアプリケーションサーバーと連携させて動作するように、管理画面などが追加、拡張されています。

なお、SmartPad4iはWindows、IBMiのIHS+WebSphere環境をサポートしています。
 ※次バージョンのCobos4iではWindows環境のApache Tomcat、IBMiのIBM Integrated Web Application Server for i に対応します。

MIME設定の変更方法

MIME設定は、IHSの設定ファイル(httpd.conf)とMIMEの設定ファイル(mime.types)ファイルに記載されています。

IHSの設定ファイル(httpd.conf)

IHSの設定ファイルはデフォルトインストールの場合、[Install Directory]/conf に格納されています。
Apache HTTP Server と同じでhttpd.confになります。

httpd.confでは、Webサーバーの様々な動作(振る舞い)を設定することになります。拡張子によってファイルの扱いを設定するためのMIME設定はhttpd.conf内では TypeConfigによりhttpd.confとは別のファイルで管理されています。

#
# TypesConfig describes where the mime.types file (or equivalent) is
# to be found.
#
TypesConfig conf/mime.types

conf/フォルダ内のmime.typesファイルがMIME設定となります。

MIME設定(mime.types)

mime.typesはhttpd.confファイル内で、TypesConfigにより指定されるファイルです。
MIMEタイプマッピング(ファイル名の拡張子設定)のデフォルト設定するファイルになります。
MIMEタイプの設定により、Content Typeとして「データの種類を表すコード」を返却します。クライアントのブラウザでは、 Content Type の種類によってどのようにファイルを扱うかを決定しています。

以下は、mime.typesファイルの一部です。
ファイルタイプの識別子と、ファイルの拡張子が設定されています。
例えば、拡張子がdocであれば、Content Typeをmswordとして返却します。

application/msword		doc
application/news-message-id
application/news-transmission
application/ocsp-request
application/ocsp-response
application/octet-stream	bin dms lha lzh exe class so dll dmg
application/oda			oda
application/ogg			ogg
application/parityfec
application/pdf			pdf

Webサーバーの設定で、ユーザーのブラウザ側でcsvファイルをダウンロードさせる方法

拡張子 [*.csv] のcsvファイルはデフォルトのMIME設定でtext/plainであるため、 Webサーバーからの転送時にtextファイルとして送信され、通常ではブラウザ上で開く場合があります。csvファイルを明示的にダウンロードさせたい場合、Webサーバーの設定ファイル(httpd.conf)を変更することで実現できます。

Addtypeディレクティブ を設定してダウンロード

httpd.confの下部にAddtypeディレクティブを追加することでMIMEタイプの上書きができます。

<FilesMatch "\.(csv)$"> 
  AddType application/octet-stream .csv
</FilesMatch>

application/octet-streamは未知のバイナリファイルを表します。
バイナリファイルとして扱われるためファイルはダウンロードされます。

また、FileMatchディレクティブはファイルレベルで適用したい場合に使用する設定で、上記の例では拡張子csvの時にAddTypeの設定が有効になります。

Header ディレクティブ を設定してダウンロード

他の方法としては、Headerディレクティブにcontent-disposition attachmentを設定することでもダウンロードが可能になります。

ブラウザによっては、AddTypeの設定または、Headerの設定が無効の場合もあるため両方設定しておくことをお勧めします。

<FilesMatch "\.(csv)$">
 AddType application/octet-stream .csv
  Header set content-disposition attachment
</FilesMatch>

なお、Header ディレクティブを利用するには headerモジュールを有効にしておく必要があります。
IBM HTTP Serverではデフォルトでコメントになっているため、利用する場合は先頭の#を削除してコメントを解除してください。

#LoadModule headers_module modules/mod_headers.so
→
LoadModule headers_module modules/mod_headers.so