在Adobe Flash Player升级到9.0.124后,由于安全策略的更改,使得在socket或xmlsocket的应用里,原先如用http方式加载安全策略的手段不能继续使用了,类似此类应用必须使用xmlsocket://方式来提供安全策略。flashplayer的安全策略检测过程如下:
1,首先检测目标服务器的843端口是否提供安全策略
2,如果1没有检测到策略,则检测actionscript是否使用了
Security.loadPolicyFile(xmlsocket://)
手段提供安全策略,如果还没检测到,则使用第3步检测
3,检测目标服务器目标端口是否提供安全策略
如果上述检测都不成功,则socket或xmlsocket则拒绝连接目标服务器。
请使用了socket 或xmlsocket的开发者尽早更换安全策略提供方式吧,否则新版flashplay用户就该不能正常使用你的应用了。
本人测试过第一种方法,这是3种方法里面最为简单的一种。用C#写一个socket服务,使用端口843。当检测到有套接字,就发送以下安全策略内容:
<cross-domain-policy><allow-access-from domain=\"xxx.com\" to-ports=\"8999\" /></cross-domain-policy>\0
记得后面加上\0,不然FLASH会以为数据没有接收完。一切OK。 此图为两个socket通信,其中下面那个就是提供安全验证的通信。
提供一些关于flash9的安全策略文章:
http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.htmlhttp://www.adobe.com/devnet/flashplayer/articles/fplayer9_security_05.html#_Configuring_Socket_Policyhttp://www.adobe.com/devnet/flashplayer/articles/flash_player9_security_update.html?devcon=f4