IE11で.warをdownloadすると.zipに変換されるのを解決する方法 on Tomcat

Tomcat上に作成したHTMLで.warをダウンロードしようとすると、勝手に拡張子が.zipになる。この課題をTomcatの設定で解決する方法をご紹介します。

発生事象

あるとき、Chrome/Edgeがともに使用不可なのでIE11でファイルをdownloadしようとしました。対象ファイルは.warファイルです。downloadにはa要素にhref属性、download属性を付けたHTML5を使用しました。すると次のような挙動をします。

勝手に.zipになっていますね。これは.warを選択したのですが、このような挙動になります。そして、GUIからファイルの種類を.warに変更しようとしても変更できません。

解決方法

IEでzipに変換されてしまうのはWebサーバー側の設定を変更することで解決することが出来ます。IEの設定を変更することで解決する方法もあるようですが、今回はWebサーバー側の設定を変更して解決する方法をご紹介します。

今回の対象WebサーバーはTomcatです。TomcatのHOMEディレクトリまで移動しましょう。

そしたら次のコマンドでweb.xmlを開き編集していきます。

vi conf/web.xml

web-app要素の中にmime-mapping要素を書けばOKです。次のように既にたくさんの拡張子が登録されています。そこに追記しましょう。

<mime-mapping>
<extension>123</extension>
<mime-type>application/vnd.lotus-1-2-3</mime-type>
</mime-mapping>
<mime-mapping>
<extension>3dml</extension>
<mime-type>text/vnd.in3d.3dml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>3ds</extension>
<mime-type>image/x-3ds</mime-type>
</mime-mapping>

私はこんな感じで書いてみました。mime-typeはかなり自由で良いと思います。

<mime-mapping>
<extension>war</extension>
<mime-type>application/webapp-archive</mime-type>
</mime-mapping>

これで再度、.warファイルをダウンロードしてみます。

無事に出来ましたね。これで、定時で帰れます。

ちなみに、apache httpd サーバーでは httpd.conf や .htaccess で下記にようにMIMEタイプを追記すると、.htaccessを配置した場所配下のファイルが対象になるようです。(試してはいませんが調べたものをメモ的に残しておきました。いつか自分で実験して記事をあげるために)

AddType application/war .war