HTTP ヘッダが原因で IE 8 でファイルを開けない/ダウンロードできない場合

サーバサイドプログラムから PDF ファイルを出力するとき、 Internet Explorer 8 ではファイルを開けない場合がある。

Accept-Ranges が原因の場合

調べてみるとレスポンスヘッダに Content-Length を指定し Accept-Ranges を指定していない場合、PDF ファイルを開こうとすると真っ白なウィンドウが開いてしまう。

対処法は簡単。Content-Length ヘッダを出力する際は同時に Accept-Ranges も出力しましょう。

Accept-Ranges: bytes
Content-Length: 123456

SSL 経由の場合

コンテンツが https: から始まる SSL 経由の URL で、コンテキストメニューから「対象をファイルに保存」を選ぶと「ファイルをキャッシュに書き込めませんでした」というメッセージが表示されてファイルを保存できない場合がある。

これは SSL 使用時に Internet Explorer が Cache-Control: no-store または Cache-Control: no-cache となっているヘッダを処理できないバグによるもの。

次のヘッダを出力することで解決する。

Cache-Control: public
Pragma: public