no-cacheとSSLとIEとファイルダウンロードno-cacheとSSLとIEとファイルダウンロード

<< このエントリーを含むはてなブックマーク >>

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が無事設定されたら問題なく保存できた。


やったー。

2026年1月

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

月別 アーカイブ

2019年
2018年
2016年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年