最近遇到了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. MAC下apache+php

    mac下是自带有Apache和php的服务器的,不需要另外安装,本文就对相关配置进行介绍. 第一:Apache 在终端中输入,下面指令即可启动Apache服务器: //启动 sudo apachect ...

  2. mysql 5.5 修改字符编码

    修改/etc/mysql/my.cnf 配置文件: 最后重启mysql 服务,再查看: 编码已经改好了,可以支持中文字符编码了.

  3. 《转载》使用org.w3c.dom.Element的setTextContent()、getTextContent()方法时出现编译错误

    今天在更新项目后进行编译时,出现如下错误一堆: 编译错误 Google之,在stackoverflow上看到如下的解决方法: I came here with the same problem. Ev ...

  4. 「C++」理解智能指针

    维基百科上面对于「智能指针」是这样描述的: 智能指针(英语:Smart pointer)是一种抽象的数据类型.在程序设计中,它通常是经由类型模板(class template)来实做,借由模板(tem ...

  5. gdb调试汇编堆栈过程的学习

    gdb调试汇编堆栈过程的学习 以下为C源文件 使用gcc - g code.c -o code -m32指令在64位的机器上产生32位汇编,然后使用gdb example指令进入gdb调试器: 进入之 ...

  6. 编译安装nginx

    一.安装工具yum -y install zlib zlib-devel openssl openssl-devel pcre-devel cc-c++ autoconf automakeyum -y ...

  7. libsvm下的windows版本中的工具的使用

    下载的libsvm包里面已经为我们编译好了(windows).进入libsvm\windows,可以看到这几个exe文件: a.svm-toy.exe:图形界面,可以自己画点,产生数据等. b.svm ...

  8. AngularJS的简单使用

    官网下载:AngularJS 路由视图需要:Angular-Route.js 基于zepto的轻量级的 JavaScript UI 库: App.js  用于开发跨平台的移动Web应用 <!DO ...

  9. spring-boot 文件上传获取不到File原因,MultipartHttpServletRequest.getFiles为空

    以下是spring-boot的处理方式,其他可参考处理具体问题:1.CommonsMultipartResolver解析不到request中的文件流2.Controller方法参数MultipartH ...

  10. mac版本cornerstone的无限期破解方法【转】

    CornerStone是个人非常喜欢的mac上的一款SVN客户端工具,官方提供了14天的免费试用(trail)版本.我们可以在此基础上提供无限期试用版本. 方法一:如果你从来没有安装过这个trail版 ...