天天看点

[Socket+AMF3]Socket安全策略问题的解决

Flash Player安全策略问题和端口问题对于Socket(XMLSocket)的web开发一直都是很头痛的问题,经过昨天一天的研究,终于找到了解决方案了,我把解决方法在这里作一下简述!

    其实Flash帮助文件也做了说明:http://help.adobe.com/zh_CN/AS3LCR/Flash_10.0/flash/system/Security.html#loadPolicyFile() 。就在调用socket.connect方式之间先进行:Security.loadPolicyFile("xmlsocket://localhost:110");来加载安全策略内容。Player将向服务端发送请求<policy-file-request/>,并以 null 字节终止。而服务端也将返回以 null 字节终止的安全策略内容。

    安全策略文本内容如下:

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd ">

<cross-domain-policy>

   <site-control permitted-cross-domain-policies="all"/>

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

</cross-domain-policy> 

在服务端就要作一下与AMF3的区别,根据检查请求中是否有"<policy-file-request/>",然后对应返回安全策略文本内容,注意是返回内容必须是以 null 字节终止!