这几天写一个Wb长连接的Demo,在使用Flash Socket时出现“Error #2048: 安全沙箱冲突:http://localhost:3000/FlashSocket/FlashSocket.swf 不能从 127.0.0.1:3333 加载数据。”的问题,花了不少时间,总算是解决了!
参考资料:
AS语言参考: http://help.adobe.com/zh_CN/AS3LCR/Flex_4.0/flash/net/Socket.html
Flash Player安全性: http://livedocs.adobe.com/flash/9.0_cn/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00000347.html
问题分析:
1、Flash安全沙箱问题
解决方案:
1>在Flash中设置域访问范围:Security.allowDomain(www.example.com)或者
Security.allowDomain("*")
2>使用服务器Socket发送安全策略文件给FlashSocket:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<!-- Policy file for xmlsocket://socks.mysite.com -->
<cross-domain-policy>
<allow-access-from domain="*" to-ports="9010" />
</cross-domain-policy>
2、注意:如果C# Socket通信出现问题也可能导致“安全沙箱问题”,可以C#建立一个客户端与服务器分别在本地和服务器上进行测试