2012-10-26 7 views
5

私はここに似たような投稿をたくさん見つけましたが、私が抱えている問題を解決するものはありません。as3 XMLSocketがポリシーファイルを要求していません

XMLSocketをサーバーに接続しようとしていますが、接続しようとしてから約10秒後に、SecurityErrorEventが発生します:エラー#2048:セキュリティサンドボックス違反(### ##のデータをcannotload) 。##:9024)。

サーバ側では、ポート9024をリッスンするPHPスクリプトがあります。他のPHPスクリプトを使用して接続できるため、正しく動作していると思います。また、私のクライアント側のPHPがポリシーファイル要求を行うと、私のサーバスクリプトがそのポリシーを返します。

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でソケットにリスナーを設定しますが、私は、彼らがトリガーされる前に、何でもうまくいかないことが起こると思う:ここに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スクリプトを使用して接続することができますよう、細かい設定しているようだが、私はAS3に接続しようとすると、それだけで永遠に待ちます。

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

答えて

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

サブドメインのクロスドメインファイルを要求しています。これにより、最大でsubdomain.domain.comに接続できます。絶対にdomain.comに接続することはできません。

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

だから、あなたはあなたのサブドメインに直接接続する必要があり、次のいずれか

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

または11.11.11.11/crossdomain.xmlに、あなたは11.11.11.11:9024に接続することができますのcrossdomain.xmlを追加します:

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

次に、サーバー上のFlashから要求を受け取ります。あなたはそれに行くのが良いです。

+0

助けていただきありがとうございますが、残念ながらまだ動作していません。ここで私は今、フラッシュで何をしています:Security.allowInsecureDomain(ip​​); \t \t \t Security.allowDomain(ip​​); \t \t \t Security.loadPolicyFile(ip + "/ crossdomain。 – Tyler

+1

私のサーバ上のログをチェックしたところ、それは見た目がよくなりました。 crossdomain.xmlファイル:<?xml version = "1.0"?> <!DOCTYPEクロスドメインポリシーシステム "http: //www.adobe.com/xml/dtds/cross-domain-policy.dtd "> Tyler

関連する問題