ソケット通信にもポリシーファイルが必要になった

Web サーバに置いた swf からソケットサーバに繋がらない事態に遭遇。下のようなエラーが出る。

Error #2044: ハンドルされていない securityError : text=Error #2048: セキュリティサンドボックス侵害 : http://xxx.xxx.xxx.xxx/foo.swf は xxx.xxx.xxx.xxx:1234 からデータを読み込めません。

調べてみたら、Flash Player 9,0,124,0 から、ソケット通信を行うためにはソケットポリシーファイルが必要になるらしい。HTTP 通信で言うところの crossdomain.xml と同じ仕組みになったということ。

Adobe Flash Player 9,0,124,0から、Flash Playerはあらかじめサーバから明確な許可を得ることなく、当該サーバに対してダイレクトなソケット接続を生成できなくなりました。これにより、一部のシステムおよびネットワークでは、許可の付与を可能にするために新たなポートを開いたり、新たなサービスを提供する必要が発生します。

上記記事から、843 番のポートでポリシーファイルを返すサーバを落としてきたら上手くいった。flashpolicy.xml を編集後 (テストなので domain、to-ports 共に *)、コマンドプロンプトを開いて Standalone フォルダに移動し

python flashpolicyd.py file=../flashpolicy.xml

で起動。