5

ここで同様の投稿をたくさん見つけましたが、私が抱えている正確な問題に対処しているようには見えません。

XMLSocket をサーバーに接続しようとしていますが、接続を試みてから約 10 秒後に SecurityErrorEvent: Error #2048: Security Sandbox violation (cannotload data from ##.##.##.##: 9024)。

サーバー側には、ポート 9024 をリッスンする php スクリプトがあります。他の php スクリプトを使用して接続できるため、正しく機能していると確信しています。また、クライアント側の PHP がポリシー ファイル リクエストを行うと、サーバー スクリプトはポリシーを返します。as3 は次のとおりです。

private var sock:XMLSocket  = new XMLSocket();

// in my connection method
Security.allowDomain("domain.com");
Security.loadPolicyFile("dubDomain.domain.com/crossdomain.xml");
Security.loadPolicyFile("xmlsocket://domain.com:9024");
sock.connect("11.11.11.11", 9024);

sock.connect を呼び出す前に as3 のソケットにリスナーを設定しましたが、トリガーされる前に問題が発生すると思います。

私の理解では、2 番目の Security.loadPolicyFile または socket.connect のいずれかで、ソケット 9024 でサーバーへの接続を試行し、ポリシー ファイルを要求する必要があります。sock.connect は、ポート 843 からの応答の取得に失敗した後にのみ要求を送信すると思います。

ただし、サーバー側では、接続が試行されていないことを示しています。私はこれをIDE(FlashDevelop)から、そしてサーバーにアップロードするときにswfから試しました。

ポート 843 で試してみますが、サーバーの管理者権限がありません。重要な場合は、PHP スクリプトの一部を次に示します。

$client = socket_accept($sock);
if (socket_getpeername($client, $address, $theirport))
{
echo "Client $address: $theirport is now connected to us\n";
}
$input = socket_read($client, 1024000);
echo "[client] $input";

別のphpスクリプトを使用して接続できるため、$sockは正常に設定されているようですが、as3に接続しようとすると永遠に待機します.

助言がありますか?私は何か誤解していますか?前もって感謝します。

4

1 に答える 1

0
Security.loadPolicyFile("subDomain.domain.com/crossdomain.xml");
sock.connect("11.11.11.11", 9024);

サブドメインのクロスドメイン ファイルをリクエストしています。最大で、subdomain.domain.com に接続できます。domain.com への接続を許可することは絶対にできません。

XMLSocket が行うことは、与えられたホスト IP に関連して、クロスドメインがあると思われる場所にロードすることです。それは で最初になり11.11.11.11/crossdomain.xmlます。見つからない場合は、アクセスを試みます11.11.11.11:843。失敗すると、セキュリティ エラーがスローされます。

したがって、サブドメインに直接接続する必要があります。

 sock.connect("subDomain.domain.com", 9024);

または、11.11.11.11:9024 で接続できるようにする crossdomain.xml を 11.11.11.11/crossdomain.xml に追加するには:

<allow-access-from domain="YOURSWFDOMAIN" to-ports="9024"/>

次に、サーバー上のフラッシュからリクエストを受け取ります。それなら大丈夫です。

于 2012-10-26T13:51:14.973 に答える