BLOGスタッフブログ

インソースマーケティングデザイン

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」が設定されていました。

# php.ini
session.cache_limiter = nocache

Flashを表示させるHTMLにも「no-cache」の記述がしてあったのが、関係したのかな。どうでしょう?

<!– HTML –>
<meta http-equiv=”Pragma” content=”no-cache”>
<meta http-equiv=”Cache-Control” content=”no-cache”>

回避策として、IEのときだけ以下のようにキャッシュをprivateに設定するという方法をとり、無事解決できました!

// PHP側
session_cache_limiter(‘private’);
(参考)http://php.net/manual/ja/function.session-cache-limiter.php
nocache :クライアントのキャッシュ無効/プロキシのキャッ シュ無効
private :クライアントのキャッシュ許可/プロキシのキャッ シュ無効
public :クライアントのキャッシュ許可/プロキシのキャッ シュ許可

以上です。ではまた。

<参考>
SSL 経由でファイルのダウンロードを Internet Explorer キャッシュ コントロール ヘッダーが機能しません
no-cacheとSSLとIEとファイルダウンロード

インソースマーケティングデザインが書いた他の記事

見積もり・ご依頼など、
お気軽にご相談ください

本サイトはユーザーエクスペリエンスの向上などを目的に、Cookieを使用しています。
右記のバナーで「同意する」をクリックする、または本サイトを利用することにより、
お客様は弊社のCookieポリシーに同意したことになります。

同意します