肉とビールとパンケーキ by @sotarok

少し大人になった「肉とご飯と甘いもの」

プログラム経由でダウンロードさせるとき、SSL×IEでエラーがでる。


ブラウザから直接アクセスできないところにファイルをストアしていって、そこからダウンロードさせるとき、直接ヘッダを送信して

<? 
...

header("Content-Disposition: attachment; filename=". $file_name);
header("Content-Length: ".$file_size);
header("Content-Type: application/octet-stream");
 
readfile($file_path);


とかやりますよね。たぶん。

ところが、SSL+IEだと、
「(ファイル名)をダウンロードできません。ファイルをキャッシュに書き込めませんでした」
ちうダイアログが出てファイルをダウンロードできないときがあります。


バグ?仕様?


これはなにやら、Cache-ControlやPragmaが、no-cacheやno-storeだとダメらしい。

<?
...

header("Cache-Control: public");
header("Pragma: public");


を追加してやらんといけないと。*1
あ、もちろんノーキャッシュにしちゃってる人は、ってことです。まぁそんなこと言わなくてもキャッシュさせてる人はエラーが出ないか(笑)



こういうIEの仕様でハマるとかなり凹む。なんかまぁなんとかなったからいいか。

*1:まぁpublicじゃなくてprivateでも大丈夫らしい