FLASH的策略文件请求

在 Adobe Flash Player 升级到 9.0.124 后,由于安全策略更改,原来 Socket 或 XmlSocket 的应用里的 http 方式加载安全策略的手段不能继续使用。更改如下: 

  • 1, 首先检测目标服务器的 843 端口是否提供安全策略
  • 2, 如果 1 没有检测到策略,则检测 actionscript 是否使用了 Security.loadPolicyFile(xmlsocket://) 手段提供安全策略,如果还没检测到,则使用第 3 步检测
  • 3, 检测目标服务器目标端口是否提供安全策略。  

      在说具体处理方式前,我先描述一下 Flash Player 的验证过程。在 Flex 程序发出 Socket 或 XmlSocket( 以下统称为 Socket) 请求前, FlashPlayer 会先判断是否为本地调用,如果不是。即用一个 Socket 去链接到你的服务端,三次握手成功后一方面发出字符串“ <policy-file-request/>\0 “另一方面监听返回的安全策略。安全策略接收成功后, FlashPlayer 就断开验证的 Socket ,然后再运行程序本身的 Socket 。在整个 SWF 运行期间,无论你请求多少次,只要域相同, FlashPlayer 就只验证一次。这里有两个重点:

  • 第一个是验证的 Socket 和程序的 Socket 是两个 Socket 。所以你在本地测试时,服务端监听到 N 个 Socket 请求,但布置到服务端后,服务端会监听到 N+1 个请求。
  • 第二是验证的 Socket 发送“ <policy-file-request/>\0 “请求和接收你的策略文件是没有先后关系的,所以你没必要接收完“ <policy-file-request/>\0 “后才发策略文件。我的做法是只要监听到请求,就把策略字符串发过去。  

     上面提供了三种方式处理安全策略。其实处理的办法差不多一样,就是要求服务端监听一个端口,如果客户端发来“ <policy-file-request/>\0 “请求,服务端就要返回你的安全策略的字符串。

策略文件两种格式

1、针对web应用的策略文件

<?xml version=”1.0″?>
<cross-domain-policy>
<allow-access-from domain=”*.endenvoy.com” />
<allow-access-from domain=”192.168.1.200″ />
</cross-domain-policy>

2、针对Socket的策略文件

<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>

其实如果你只是想让你的程序正常运行,可以直接写成<allow-access-from domain=”*” to-ports=”*” />这样就什么都能访问了。

套接字策略文件的介绍:http://www.java1995.cn/blog/item/249


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值