SSL環境下でphpで動的にファイルを吐き出してDLさせようとした時、IEだとエラーが出た。
IE8でも駄目だった。
調べていて以下のサイトにたどり付く。
・[IE] HTTPS URL から Office ドキュメントまたは PDF ファイルを開こうとすると "ダウンロードできません" エラーが発生
・Internet Explorer が SSL 経由によるファイルのダウンロードで "No-Cache" ヘッダーを処理できない
どうやらSSL環境下でno-cashe、no-storeするとIEでDLできないらしい。
no-casheしてる所は心あたりがなかったけど、実際にレスポンスヘッダーを見てみたらガッツリ入ってる。
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
ession_startを呼出した段階でphp.iniの「session.cache_limiter」の値に設定されていた値に応じたheaderが吐かれるらしい。
見てみたら
session.cache_limiter = nocache
となっていた。
どうみてもno-cacheですほんとうにありがとうございました。
という事で書き変えてみる。
php.iniを書き変えても良いけど、session_startの前にsession_cache_limiterを使って設定してもok。
もしくは
header('Cache-Control: public');
header('Pragma:');
こんな感じで無理矢理上書きしてもいけた。
そもそもPragmaはno-cache以外の設定値が無いから空文字で設定しても問題ないのか微妙な所だが。
とりあえず出来る限り前者の方法で設定しよう。
headerが無事設定されたら問題なく保存できた。
やったー。
コメントする