セキュリティサンドボックス侵害 Flash External Interface

2009-06-17 23:29:34

Webであまり情報がなかったので、特異な事例かもしれませんが、一応書いておきます。

 それは突然やってきました。
Webサービスを現在開発しており、Fash自体はあくまでViewerという設計思想の元、Flashのレンダリングに必要な情報は、
JavaScript経由で取得。 -> FlashのExternal Interface経由でFlashに登録。

開発環境・ステージング環境ではまったく問題なかったのですが、
本番環境で突然Debug版のFlash Playerが「セキュリティサンドボックス侵害 _initJS() 云々。。」とエラーを吐き、
ExternalInterfaceのRegister以降、動かなくなりました。

この問題の気持ち悪いところは、
2回目のPage Loadからエラーが起こる。

IE 6,7,8, FireFox, Chrome, Opera, (Win)Safariでは問題ないものの、
Lunascape, sleipnir, IETab, etc..では再現する。

はい、勘の良い方ならお気づきでしょうが、
IE Component (= trident)をホストしているブラウザだとこの問題はおきます。

動き的には、一回目のリクエストでキャッシュした.swfをfile://--- プロトコルとみなしてhttp://---プロトコルと通信しようとしているようです。

キャッシュを消すと動きます。
また、swfをキャッシュしない方法に、 http://www.adobe.com/jp/support/kb/ts/228/ts_228621_ja-jp.html 「SWFファイルのキャッシュを防ぐ方法」
というArticleがあります。

Staging環境で動いていたのは
サーバーの設定でClientがswfをキャッシュしていないためでした。

本番環境でも同様のことをswfに対してのみ行ってくれと運用チームにお願いして終了。

比較的大規模システムなので、
サーバーの構成等は開発側はみんな熟知しているわけではありません。。

IISならhttp://support.microsoft.com/kb/247389/ja の方法で特定のMIMEタイプのクライアントへのキャッシングを無効化できるようです。

 

久しぶりにはまりましたー。 

※このエントリは ブロガーにより投稿されたものです。朝日インタラクティブ および ZDNet Japan編集部の見解・意向を示すものではありません。
  • 新着記事
  • 特集
  • ブログ