默认情况下,Flash Player 会从端口 843 查找套接字策略文件。和 URL 策略文件一样,此文件称为“主策略文件”,如果要从其它端口提供套接字策略文件,SWF 文件必须调用 Security.loadPolicyFile()。
套接字策略文件具有与 URL 策略文件相同的语法,只是前者还必须指定要对哪些端口授予访问权限。如果套接字策略文件来自低于 1024 的端口号,则它可以对任何端口授予访问权限;如果策略文件来自 1024 或更高的端口,则它只能对 1024 端口和更高的端口授予访问权限。允许的端口在 <allow-access-from> 标记中的 to-ports 属性中指定。单个端口号、端口范围和通配符都是允许值。
Flash Player 首先在端口 843 上检查是否有主策略文件。如果找到主策略文件,Flash Player 将检查该文件是否含有在目标端口上禁止套接字策略文件的元策略语句。如果未禁止访问,Flash Player 首先在主策略文件中查找适当的 allow-access-from 语句。如果找不到主策略文件,Flash Player 将从主套接字连接所在的端口上查找套接字策略文件。
当 Flash Player 请求策略文件时,它始终会在建立连接后传输以下字符串:<policy-file-request/>;服务器收到此字符串后,即会传输该策略文件。
程序对于策略文件请求和主连接并不会使用同一连接,因此请在传输策略文件后关闭连接。如果不关闭连接,Flash Player 将关闭策略文件连接,之后重新连接以建立主连接。
如果服务器是linux系统,那么我们在http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html,下载flashpolicyd_v0.6.zip
这里有perl和python脚本,安装python或perl后就可以使用,上面的网址有使用说明:
./flashpolicyd.pl --file=../policyfile.xml --port=843(perl)
./flashpolicyd.py --file=../policyfile.xml --port=843(python)
策略文件示例:
<cross-domain-policy>
<allow-access-from domain="*" to-ports="507" />
<allow-access-from domain="*.example.com" to-ports="507,516" />
<allow-access-from domain="*.example2.com" to-ports="516-523" />
<allow-access-from domain="www.example2.com" to-ports="507,516-523" />
<allow-access-from domain="www.example3.com" to-ports="*" />
</cross-domain-policy>
注意:如果domain(域名)是ip,这里一定要写通配符*,不能写ip,否则无法通过安全策略;