0
Error #2044: Unhandled SecurityErrorEvent:. text=Error #2048: Security sandbox violation: http://kipos.bluecodestudio.com/holdthebomb/HoldTheBombWeb.swf cannot load data from http://23.29.126.76:8000/socket.io/1/?t=1356891827452.
    at io::Socket/doHandshake()[/Users/airrider3/github/AS3-Socket.IO-XHR-Polling/xhr-polling/src/io/Socket.as:139]
    at io::Socket/connect()[/Users/airrider3/github/AS3-Socket.IO-XHR-Polling/xhr-polling/src/io/Socket.as:110]
    at io::Socket()[/Users/airrider3/github/AS3-Socket.IO-XHR-Polling/xhr-polling/src/io/Socket.as:90]
    at io::IO$/connect()[/Users/airrider3/github/AS3-Socket.IO-XHR-Polling/xhr-polling/src/io/IO.as:36]
    at MainController/endOfbluecodeSplash()[/Users/airrider3/Dropbox/Projects/Kipos/Minigames/HoldTheBombWeb/src/MainController.as:41]
    at bluecodeSplash/endOfSplash()[/Users/airrider3/Dropbox/Projects/Kipos/Minigames/HoldTheBombWeb/src/bluecodeSplash.as:55]
    at Function/http://adobe.com/AS3/2006/builtin::apply()
    at com.greensock.core::TweenCore/complete()[D:\_Flash\_AS3\src\com\greensock\core\TweenCore.as:178]
    at com.greensock::TweenLite/renderTime()[D:\_Flash\_AS3\src\com\greensock\TweenLite.as:477]
    at com.greensock.core::SimpleTimeline/renderTime()[D:\_Flash\_AS3\src\com\greensock\core\SimpleTimeline.as:93]
    at com.greensock::TweenLite$/updateAll()[D:\_Flash\_AS3\src\com\greensock\TweenLite.as:642]

Socket.IOモジュールを使用してNodeJSを実行しているサーバーに接続するActionScriptプロジェクトであるFlashBuilderを使用しています。

Socket.IOをAS3に接続するには、次のライブラリhttps://github.com/sbquinlan/AS3-Socket.IO-XHR-Polling を使用しています。これは、FlashBuilderからローカルでテストしているときに完全に機能します。

ただし、私のドメイン[http://kipos.bluecodestudio.com/holdthebomb/]でホストされている場合、crossdomain.xmlファイルを正しく使用していないため、このSecurityErrorEventが発生すると思いますか?正直なところ、私はこのトピックに慣れていないので、これがエラーかどうかはわかりません。

いずれにせよ、私は次のcrossdomain.xmlファイルを持っています:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
   <site-control permitted-cross-domain-policies="master-only"/>
   <allow-access-from domain="*" to-ports="*"/>
</cross-domain-policy>

サーバーのさまざまな場所にあります。(それはホスティングクライアント上にあるべきですか?)はい、ゲームはbluecodestudio.comでホストされていますが、ゲームのサーバーはIP 23.29.126.76にあり、ポート8000​​で実行されています。

クロスドメインポリシーエラーの場合、問題を解決するために何をすべきかを説明してくれる人はいますか?

ご清聴ありがとうございました。

アップデート1:

クロスドメインファイルを提供するポート843でリッスンするサーバーをセットアップしましたが、Flashがどのようにそれをロードしようとしないかを確認できます。(コマンドをテストしpython -c 'print "<policy-file-request/>%c" % 0' | nc 23.29.126.76 843、ポリシーサーバーが実際にどのように機能するかを確認しました。

SWFがクロスドメインポリシーファイルをロードしようとしないのはなぜですか。

4

2 に答える 2

4

クロスドメインポリシーファイルは、サーバーが実行されているマシン、つまり23.29.126.76でホストする必要があります。ソケット接続の場合、Flash Playerはポート843からマスタークロスドメインポリシーファイルを自動的にロードしようとします(adobe.comhttp : //www.adobe.com/cn/devnet/flashplayer/articles/socket_policy_files.htmlから簡単なポリシーサーバースクリプトを入手できます。 )。

UPD:Security.loadPolicyFile("xmlsocket://23.29.126.76:843");ポリシーファイルを直接ロードするために使用しますが、Flash Playerがすでに同じことを自動的に実行するように書いたので(ポート843の場合)、文字列要求を送信します"<policy-file-request/>\0"

デバッグポリシー

ポリシーサーバをデバッグするには、次の手順を実行します。

  1. デバッグフラッシュプレーヤーがあることを確認してください。

  2. 次のコマンド(Linux、Mac、またはWindowsのcygwin)を使用して、サーバーのインストールが正しいことを確認しますecho -ne '<policy-file-request/>\0' | nc -v host port。このコマンドは、crossdomain.xmlファイルを出力する必要があります

  3. mm.cfgPolicyFileLog=1ファイルにフラグを設定してFlashPlayerのポリシーログをオンにし(Flash Playerのデバッグバージョンがあることを確認してください)、swfファイルを実行してポリシーログを読み取ります。ユーザーフレンドリーな形式であるため、把握できます。ほとんどの場合、このログで問題を解決します。

于 2012-12-30T18:54:56.170 に答える
0

うわあ。Socket.IOのドキュメントでこれを読んだだけです:「フラッシュポリシーポートのデフォルトは10843です

デフォルトでは、Socket.IOクライアントはサーバーのポート10843をチェックして、フラッシュソケット接続が許可されているかどうかを確認します。Adobe Flash Playerは通常843をデフォルトのポートとして使用しますが、デフォルトで非ルートポートにすることにしました。」

そのため、ポート843からファイルを読み込もうとしませんでした...

ソース:https ://github.com/LearnBoost/Socket.IO/wiki/Configure-Socket.IO

于 2013-02-08T18:38:48.427 に答える