最近遇到了flash的万年老梗,跨域访问的问题。之前一直没有处理过这类问题,是因为做项目的时候别人已经处理好了。真到自己遇到的时候,还是很费脑筋的。

1遇到的问题

客户端发布到网页的时候,socket连接服务器的时候,抛出SecurityErrorEvent.SECURITY_ERROR错误,security error #2048。

2网上搜索问题

网上很多人遇到这种问题,不用谷歌都能搜索到一大堆相关网页。
http://stackoverflow.com/questions/14634366/how-can-i-fix-a-flash-security-error-2048
http://blog.csdn.net/zhytry/article/details/50963919
http://blog.csdn.net/summerhust/article/details/7721627
http://blog.163.com/cmdbat@126/blog/static/1702921232014112433238426/
http://stackoverflow.com/questions/5435495/flash-security-error-2048-is-there-a-workaround-or-does-twilio-have-to-change
http://www.myexception.cn/flex/1550618.html
http://www.senocular.com/pub/adobe/crossdomain/policyfiles.html
http://www.adobe.com/devnet/flashplayer/articles/fplayer9_security.html
http://blog.sina.com.cn/s/blog_534d8f9c0100a29d.html
http://bbs.9ria.com/forum.php?mod=viewthread&tid=60441
http://bbs.9ria.com/forum.php?mod=viewthread&tid=82127
http://smartblack.iteye.com/blog/1128154
http://blog.csdn.net/leinchu/article/details/9254743

3解决问题

归根到底就是安全策略文件问题,默认的安全策略文件是crossdomain.xml。但是我的服务器的根目录是有这个文件的,而且为了方便测试,配置的都是"*",全部都允许。这篇文章http://smartblack.iteye.com/blog/1128154给了我很大帮助

从一些官方的一些资料中了解了一下。以前的Flash Player无论你采用urlRequest的http请求方式或者xmlsocket socket方式,他们都共用一个安全策略文件。这个策略文件只要你放在主域的目录下就行了。而现在不行了,现在的策略文件如果你使用http请求方式那么需要把策略文件放在目录下面,如果你使用socket请求方式就必须通过socket端口来接收这个策略文件。
对应调用的方式为:
http请求——》Security.loadPolicyFile(“http://www.xxx.com/crossdomain.xml”)
socket或xmlsocket请求——》Security.loadPolicyFile(“xmlsocket://www.xxx.com:port”)
 所以上述第二步中用的HTTP请求方式是无效的~
参考Flash Socket通信的安全策略问题 843端口(转载)
  socket安全策略的问题

意思就是说如果你是使用socket连接服务器,那你使用Security.loadPolicyFile("http://xxx.xxx.xxx.xxx/crossdomain.xml")这种方式来请求策略文件是无效的,因为你这种请求策略文件走的是http协议,而socket用的tcp协议。所以无效。为了验证这个问题,我使用wireshark抓包来验证一下这个问题

服务器挂了,待截图

flash跨域访问,crossdomain.xml,error #2048的更多相关文章

  1. Flash跨域传输数据 crossdomain.xml

    一.概述位于www.a.com域中的SWF文件要访问www.163.com的文件时,SWF首先会检查163服务器目录下是否有crossdomain.xml文件,如果没有,则访问不成功:若crossdo ...

  2. flash跨域访问

    -------------------------------------------------------背景------------------------------------------- ...

  3. 跨域文件crossdomain.xml在weblogic上的部署

    1.新建一个ROOT文件夹,把crossdomain.xml拷贝到这个文件夹下. 2.在ROOT文件夹下新建一个WEB-INF文件夹 3.在WEB-INF文件夹下建立一个weblogic.xml文件, ...

  4. 【转】silverlight 跨域访问

    作者:MIDI  来源:博客园  发布时间:2010-01-01 17:39  阅读:204 次  原文链接   [收藏]    在 Silverlight 使用 WebService .WCF.We ...

  5. SpringBoot 实现前后端分离的跨域访问(CORS)

    序言:跨域资源共享向来都是热门的需求,使用CORS可以帮助我们快速实现跨域访问,只需在服务端进行授权即可,无需在前端添加额外设置,比传统的JSONP跨域更安全和便捷. 一.基本介绍 简单来说,CORS ...

  6. 转载:flash 跨域 crossdomain.xml

    转载自http://hi.baidu.com/bozz_/item/e8b1c7c4ca31317489ad9e91 flash 跨域 crossdomain.xml 一.概述 位于www.cross ...

  7. flash跨域策略文件crossdomain.xml

    flash在跨域时唯一的限制策略就是crossdomain.xml文件,该文件限制了flash是否可以跨域读写数据以及允许从什么地方跨域读写数据. 位于www.a.com域中的SWF文件要访问www. ...

  8. flash跨域策略文件crossdomain.xml配置详解

    来源:http://www.2cto.com/Article/201108/100008.html 0x01 简介 flash在跨域时唯一的限制策略就是crossdomain.xml文件,该文件限制了 ...

  9. Flash完美跨域访问的方法

    先,你要确定以下几点,否则可能无法实现: 1.你要跨到哪个域,你必须能管理那域上文件,因为这里要放一个通行文件. 2.你的Flash如果只有SWF,那不一定能实现,因为有时,Flash的AS中,要加入 ...

随机推荐

  1. Java Bean、POJO、 Entity、 VO 、PO、DAO

    Java Bean.POJO. Entity. VO , 其实都是java 对象,只不过用于不同场合罢了.    Java Bean: 就是一个普通的Java 对象, 只不过是加了一些约束条件.  声 ...

  2. [转载]jquery版小型婚礼(可动态添加祝福语)

    原文链接:http://www.cnblogs.com/tattoo/p/3788019.html 前两天在网上不小心看到“js许愿墙”这几个字,我的神经就全部被调动了.然后就开始我 的百度生涯,一直 ...

  3. php中计算二维数组中某一元素之和

    [0] => array(5) { ["id"] => string(2) "11" ["name"] => string ...

  4. Linux kernel4.4.12 添加make menuconfig 可选项

    Linux kernel 源码添加可选项 闲来无事,顺便记录一篇在Linux kernel make menuconfig 内添加一个可选项. 说不定将来就要用到这个东西呢. linux kernel ...

  5. linux之netstat命令

    netstat用于显示各种网络相关的信息,如网络连接,路由表接口状态(interface statistics), masquerade连接,多播成员(Multicast Memberships)等等 ...

  6. (转帖)开源容器集群管理系统Kubernetes架构及组件介绍

    最近在搞Docker还有她的管理工具,选型Kuberetes后,被她的术语和概念搞得晕头转向...看了一篇文章还不错,放到这里分享出来. 地址:http://www.linuxidc.com/Linu ...

  7. Asp.Net 数据库连接字符串

    <configuration> <connectionStrings> <add name="DefaultConnection" providerN ...

  8. Angular2 Http

    1. 使用Http 绝大部分应用程序都会和后台服务打交道,Http是浏览器和服务器之间通讯的主要协议,通过Http调用来访问远程服务器上相应的 Web API. HttpModule 并不是 Angu ...

  9. sql server 2008 R2配置管理

    安装vs2013后,sql server 2008R2配置管理提示“远程过程调用失败” 这是因为vs2013自带的Microsoft SQL Server 2012Local DB与之冲突. 通过升级 ...

  10. 【转】实现ViewPager懒加载的三种方法

    方法一 在Fragment可见时请求数据.此方案仍预加载了前后的页面,但是没有请求数据,只有进入到当前Framgent时才请求数据. 优点:实现了数据的懒加载缺点:一次仍是三个Framgment对象, ...