動的に生成した CSV ファイルが IE だけダウンロードできない

カテゴリ: PHP

記事投稿日: 2013年12月25日



リンクをクリックしたら、特定のデータを生成してダウンロードさせる、よくある仕組み。

Firefox や Google Chrome では問題ないのに、
IE だけファイルがダウンロードできない。
ここでは、CSV ファイルをダウンロードさせたいのに、
生成している PHP ファイルが対象になり、
ダウンロードできないと警告が表示される。

調べると、マイクロソフトの公式ページで IE のバグと説明されている。
HTTPS でファイルのダウンロードを行おうとするとこのバグが出る。
(『Internet Explorer 6 (IE6) での Content-Disposition: attachment と Cache-Control: no-cache によるダウンロードの問題』)

公式ページに説明があっても、PHP での対応策は書かれていない。

別の記事では「header(“Pragma: public”);」だけを追加するように記述されていたが、
IE8 では動かなかった。
結論としては、キャッシュの設定も必要で、以下の4行が必要。

<変更前>
header(‘Content-Disposition: attachment; filename=”hoge.csv”‘);
header(‘Content-Type: application/octet-stream’);

<変更後>
header(‘Cache-Control: public’);
header(‘Pragma: public’);
header(‘Content-Type: application/octet-stream’);
header(‘Content-Disposition: attachment; filename=”hoge.csv”‘);

個人レベルでは HTTPS 通信を行う機会はあまりないので、良い経験になった。








コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA




トップに戻る