インソースマーケティングデザイン
2012.05.31 システム
[PHP]IE+SSL環境でFlashファイルが表示できない
先日、object、embedタグでページ内に埋め込まれているFlashファイルがIE7で表示できないという現象が発生し、はまりにはまりました。
Flashファイルの表示には、WEBから見えない場所(ドキュメントルートの外)にあるFlashファイルを「PHP」にて、
以下のようにブラウザに送り出し、表示させるという処理をしていました。
しかし、Firefox、Chrome、Safari、IE8では表示できるのに、「IE7」でだけ表示ができませんでした。
しかも、画像は表示できるのに、Flashだけ表示できない・・・。
// PHP側のFlash表示方法
//————————–
// セッションをスタートし、諸々の処理を実行!
session_start();
// そしてFlash表示↓
header(‘Content-type: application/x-shockwave-flash’);
header(‘Content-Length: Flashファイルサイズ);
readfile(‘パスも含めたFlashファイル’);
調べてみると、PHPでセッションを開始すると(session_start)、php.iniの「session.cache_limiter」の値に設定されている値に応じたheaderが吐かれるそうです。
しかし、IE+SSL環境下では「no-cache」が処理できないそうで、Flashファイルが処理できなかったのかもしれません。
php.iniを確認すると、確かに「no-cache」が設定されていました。
session.cache_limiter = nocache
Flashを表示させるHTMLにも「no-cache」の記述がしてあったのが、関係したのかな。どうでしょう?
<meta http-equiv=”Pragma” content=”no-cache”>
<meta http-equiv=”Cache-Control” content=”no-cache”>
回避策として、IEのときだけ以下のようにキャッシュをprivateに設定するという方法をとり、無事解決できました!
session_cache_limiter(‘private’);
nocache :クライアントのキャッシュ無効/プロキシのキャッ シュ無効
private :クライアントのキャッシュ許可/プロキシのキャッ シュ無効
public :クライアントのキャッシュ許可/プロキシのキャッ シュ許可
以上です。ではまた。
<参考>
「SSL 経由でファイルのダウンロードを Internet Explorer キャッシュ コントロール ヘッダーが機能しません」
「no-cacheとSSLとIEとファイルダウンロード」