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_AS3srccomgreensockcoreTweenCore.as:178]
at com.greensock::TweenLite/renderTime()[D:_Flash_AS3srccomgreensockTweenLite.as:477]
at com.greensock.core::SimpleTimeline/renderTime()[D:_Flash_AS3srccomgreensockcoreSimpleTimeline.as:93]
at com.greensock::TweenLite$/updateAll()[D:_Flash_AS3srccomgreensockTweenLite.as:642]
我正在使用Flash Builder,一个ActionScript项目,它连接到使用Socket运行NodeJS的服务器。IO模块。
连接Socket。IO与AS3我使用以下库https://github.com/sbquinlan/AS3-Socket.IO-XHR-Polling在本地测试时,从Flash Builder中可以完美地工作。
然而,如果托管在我的域[http://kipos.bluecodestudio.com/holdthebomb/]上,我想它会引发这个securityerrorvent,因为我没有正确使用任何crossdomain.xml文件?老实说,我从来没有处理过这个话题,所以我不确定这是否是错误。
无论如何,我有以下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>
我把它放在服务器的不同位置。(它应该在托管客户机上吗?)是的,游戏托管在bluecodesstudio.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不尝试加载跨域策略文件?
跨域策略文件应该托管在服务器运行的机器上,即23.29.126.76。对于套接字连接,flash播放器自动尝试从端口843加载主跨域策略文件(您可以从adobe.com http://www.adobe.com/cn/devnet/flashplayer/articles/socket_policy_files.html获得简单的策略服务器脚本)
乌利希期刊指南:使用Security.loadPolicyFile("xmlsocket://23.29.126.76:843");
直接加载策略文件,但我写的flash播放器已经做了同样的自动(端口843),它发送字符串请求"<policy-file-request/>