我在這裏發現了很多類似的帖子,但似乎沒有解決我遇到的確切問題。as3 XMLSocket沒有請求政策文件
我只是試圖連接一個XMLSocket到我的服務器,並且在我嘗試連接10秒鐘後,我得到一個SecurityErrorEvent:錯誤#2048:安全沙箱違例(無法從##。##。##中加載數據##:9024)。
服務器端,我有一個PHP腳本,監聽端口9024.我敢肯定,這是正確的,因爲我可以連接到它使用其他的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);
我在AS3設置監聽器插座上的調用sock.connect過,但我想他們會被觸發之前,無論出錯情況。
我的理解是,在第二個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連接。
有什麼建議嗎?我誤解了什麼嗎?提前致謝。
感謝您的幫助,但不幸的是,它仍然無法正常工作。以下是我現在在閃存中的內容:Security.allowInsecureDomain(ip); \t \t \t Security.allowDomain(ip); \t \t \t Security.loadPolicyFile(ip +「/ crossdomain。xml「); \t \t \t sock.connect(ip,9024); ip =」domain.com「;一切現在連接到域,而不是子域 – Tyler
我檢查了我的服務器上的日誌,它看起來像像crossdomain.xml文件被拾取,但我仍然遇到同樣的問題。這裏是crossdomain.xml:<?xml version =「1.0」?> <!DOCTYPE cross-domain-policy SYSTEM 「http: //www.adobe.com/xml/dtds/cross-domain-policy.dtd「> <跨域策略> <站點控制允許交叉域的策略=」所有「/> cross-domain-policy> –
Tyler