前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >flash和策略文件

flash和策略文件

作者头像
IMWeb前端团队
发布2019-12-04 13:13:28
7100
发布2019-12-04 13:13:28
举报
文章被收录于专栏:IMWeb前端团队

本文作者:IMWeb 王少飞 原文出处:IMWeb社区 未经同意,禁止转载

最近的项目涉及到flash通过socket和服务器连接,刚接触这方面的内容,遇到了flash通信时安全策略的问题,这里记录下,有遇到相同问题的同学可以参考下。

HTML中的flash和服务器链接最初报错:[SecurityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048"]。抓包:

flash有发请求但服务器端业务接口中并没有收到请求,抓包可以看到,flash先请求了843接口,但没有成功,重试了一次后,请求了80端口,三次握手之后,发送了一段数据: <policy-file-request/>, 同时在as文件中触发了SecurityErrorEvent.SECURITY_ERROR 事件,通过排查发现是flash要请求安全策略文件。

当封装在页面的flash发起socket通信请求的时候会先寻找服务器端的843端口,获取Crossdomain.xml文件,当服务器没有开启843的时候,flashPlayer会检查发起请求的swf文件中中有没有使用Security.loadPolicyFile来加载策略文件Crossdomain.xml,如果还是没有就会看这个发起请求的swf要连接的目标端口有没有策略文件。如果都没有那么连接失败,返回如上的出错提示

由于测试服务器无法监听843端口,我们想通过监听8080端口来发送策略文件,操作方法是在socket.connect(ip, port)之前调用SWF Security.loadPolicyFile("xmlsocket://server.com:8080");,再试还是相同的错误:

8080端口返回了策略文件但是flash仍然请求了80端口获取获取策略文件,本来是按照文档操作的,带着疑问看了as的文档

as文档描述如下:

默认情况下禁止访问套接字和 XML 套接字连接,即使所要连接的套接字与 SWF 文件位于同一个域中也是如此。可以从下列 任意位置提供套接字策略文件,从而允许套接字级别访问: • 端口 843 (主策略文件的位置) • 与主套接字连接相同的端口 • 主套接字连接端口之外的端口 默认情况下, Flash Player 在端口 843 和主套接字连接所在的端口上查找套接字策略文件。如果要从其它端口提供套接字策略文件, SWF 文件必须调用 Security.loadPolicyFile()。 套接字策略文件具有与 URL 策略文件相同的语法,只是前者还必须指定要对哪些端口授予访问权限。如果套接字策略文件来自低于 1024 的端口号,则它可以对任何端口授予访问权限;如果策略文件来自 1024 或更高的端口,则它只能对 1024 端口和更高的端口授予访问权限。允许的端口在 标记中的 to-ports 属性中指定。单个端口号、端口范围和通配符都是允许值。

也就是我们用了8080端口提供的策略文件并不能控制80端口的访问权限。

所以必须开启843端口,或者还是从8080端口获取侧略文件, 但要将主业务的端口改成大于1024。


参考:

[ActionScript 3] Flash Socket通信的安全策略问题 843端口(转载)

ADOBE® ACTIONSCRIPT® 3.0

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-12-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档