ローカル環境でSWFを使用する際にセキュリティにひっかかってしまったので少しまとめておきたいと思います。

Flashのパブリッシュ設定に「ローカルでの再生に関するセキュリティ」という項目があります。 選択肢としては

  • ローカルファイルのみにアクセスする
  • ネットワークにのみアクセスする
の二つのうち一つが選べるようになっています。

  • ローカルファイルのみにアクセスする を選択した場合 ローカルのURLにある外部ファイルに対して ・ XML.load、XML.sendAndLoad ・ LoadVars.load、LoadVars.sendAndLoad、loadVariables、loadVariablesNum、MovieClip.loadVariables ・別の SWF ライブラリからのシンボルの読み込み などが行えます。
  • ネットワークにのみアクセスする を選択した場合 ローカルでないURLにある外部ファイルに対して ・XML.load、XML.send、XML.sendAndLoad ・LoadVars.load、LoadVars.send、LoadVars.sendAndLoad、loadVariables、loadVariablesNum、MovieClip.loadVariables ・ XMLSocket.connect ・ NetConnection.call (Flash Remoting) ・ 別の SWF ライブラリからのシンボルの読み込み ・ getURL、MovieClip.getURL ・loadMovie、loadMovieNum、MovieClip.loadMovie、MovieClipLoader.loadClip ・ Sound.loadSound などが行えます。 ここでできるのは要求をなげるだけであり、応答を得るには対象のデータが存在するドメインから許可されている必要があります。

今回はまってしまったのは、ローカルでのHTMLとSWFのスクリプティングのやりとりは 「ローカルファイルのみにアクセスする」を選択した場合に許可される権限とは別になるということです。WEBブラウザとFlashPlayerのセキュリティモデルが異なるおそれがあるということですね。 この権限を許可するには、「FlashPlayerTrust設定ファイル」というものを設定する必要があります。

設定方法は

  1. テキストエディタを使用して、新しいファイルを作成します。
  2. 使用したいSWFの場所のディレクトリパスを記述します。
  3. #Securityフォルダ内にFlashPlayerTrustというフォルダを作成します。 #Securityフォルダは Windows: <ブートドライブ>\Documents and Settings\<ユーザー名>\Application Data\Adobe\Flash Player\#Security Macintosh: /ユーザ/<ユーザー名>/Library/Preferences/Adobe/Flash Player/#Security/ にあります。
  4. FlashPlayerTrustフォルダ内にtrustFile.cfg (ファイル名は一意)としてに保存します。

以上でtrustFile.cfg内に記述したディレクトリに保存したFlashアプリケーションからのローカルファイルやネットーワークへのアクセスを許可することができるようになります。

HTML5飯