这次的安全更新会影响到SWF内容和相关部署细节。所以说要提前准备好。将影响到的如下:
- 使用到addRequestHeader或者URLRequest.requestHeaders跨域发送或者读取数据
- 使用到访问远程Web Service
- 使用到sockets或者XMLSockets
以上是策略文件的变化,都需要策略文件了。
- 使用到getURL()和navigateToURL()方法通过jsvascript:或者vbscript:调用外部函数
- 发布成7.0的SWF或更早版本的allowScriptAccess将由默认值always改为sameDomain
以上是控制引入外域的SWF对页面进行的脚本操作的权限收拢。用到javascript:应该是很多了,需要改成ExternalInterface.call方法来回避。
去官方获取更多信息
今天为了测试一个Flash程序在跨域环境下的运行,嫌配置apache虚拟目录麻烦,就直接拖放到HFS里面建立虚拟目录来跑,这一跑就害我折腾老半天。
在httpWatch中能清楚看到已经拉取了crossdomain.xml,而且也看到crossdomain.xml的内容已经授权SWF所在域,我也试着改为<allow-access-from domain=”*” />,Flash任然报没有信任的错误。接着是一番折腾。。
服了,还是改用Apache,再次测试,这次就没有任何跨域的错误了。
很奇怪了,同样的web目录,在不同服务器有不同的结果。
检查下来,该死,HFS将xml文件设置的Content-Type为了application/octet-stream,造就了今天的折腾。
最后得出结论,FlashPlayer读取crossdomain.xml按HTTP头中的Content-Type来判断了,以前好像是只管文件内容的。就算拉取crossdomain.jpg为名的策略文件也可以。不知道什么时候改了。
这里又是FlashPlayer 安全更新的一个细节。记录下来!