1.当将Flash发布成Html之后,Socket将无法连接。
错误代码:
[SecurityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048"]
问题原因:
当flashplayer升级到9.0.115.0之后,当flash文件要进行socket通信的时候,需要向服务器端获取crossdomain.xml文件。在9.0.115.0之前的版本的flash是可以和socket进行正常通信的。在升级后的版本后,就出现客户端无法连接服务器的现象。
2.urlload跨域访问文件
在同一个域名下,在默认的沙箱中,可以访问同域下的所有资源并且可以相互读取和执行彼此的逻辑代码,这是对称的权限。
在不同的域名下,默认情况下可以发送信息到其他域,但不能从其他域取数据。
<!--[if !supportLists]-->1. <!--[endif]-->获取非Swf脚本文件,如:静态文本,图片等。 需要配置crossdomain.xml文件
<!--[if !supportLists]-->2. <!--[endif]-->获取Swf脚本文件。则需要在本访问的Swf文件中,设置允许其他域的访问
Security.allowDomain("*");
允许所标识的域中的 SWF 文件和 HTML 文件访问包含 allowDomain() 调用的 SWF 文件中的对象和变量。
Security.allowInsecureDomain("*");
允许所标识的域中的 SWF 文件和 HTML 文件访问执行调用的 SWF 文件中的对象和变量,该文件是使用 HTTPS 协议承载的。
关于Loader和UrlLoader跨域读取文件时的注意点:
<!--[if !supportLists]-->1. <!--[endif]-->当使用Loader读取文件的时候,Flash不会自动载入域名下的crossdomain.xml文件。需要手动的设置:Security.loadPolicyFile("http://192.168.1.80/crossdomain.xml"); 才能加载。
<!--[if !supportLists]-->2. <!--[endif]-->使用UrlLoader读取文件的时候,Flash直接会自动载入域名下的crossdomain.xml文件。
Crossdomain.xml 简单配置说明
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
crossdomain.xml需严格遵守XML语法,有且仅有一个根节点cross-domain-policy,且不包含任何属性。在此根节点下只能包含如下的子节点:
site-control、
allow-access-from、
allow-access-from-identity、
allow-http-request-headers-from
site-control:通过检查该节点的属性值,确认是否可以允许加载其他策略文件。每个site-control标签有且仅有属性permitted-cross-domain-policies,该属性指定相对于非主策略文件的其他策略文件的加载策略。
permitted-cross-domain-policies属性值有如下情况:
none: 不允许使用loadPolicyFile方法加载任何策略文件,包括此主策略文件。
master-only: 只允许使用主策略文件[默认值]。
by-content-type:只允许使用loadPolicyFile方法加载HTTP/HTTPS协议下Content-Type为text/x-cross-domain-policy的文件作为跨域策略文件。
by-ftp-filename:只允许使用loadPolicyFile方法加载FTP协议下文件名为crossdomain.xml的文件作为跨域策略文件。
all: 可使用loadPolicyFile方法加载目标域上的任何文件作为跨域策略文件,甚至是一个JPG也可被加载为策略文件![使用此选项那就等着被xx吧!]
例:
<cross-domain-policy>
<site-control permitted-cross-domain-policies="by-content-type" />
</cross-domain-policy>
allow-access-from:通过检查该节点的属性值,确认能够读取本域内容的flash文件来源域。
allow-access-from标签有三个属性:
domain:该属性指定一个确切的IP地址、一个确切的域或一个通配符域(任何域)。只有domain中指定的域,才有权限通过flash读取本域中的内容。
Tips:当domain被指定为IP地址时,只接受使用该IP作为网址来访问的来源请求[此时ip地址也就相当于一个域名而已],如domain被设置为192.168.1.100时,使用http://192.168.1.100/flash.swf来请求该域内容是允许的,但是使用指向192.168.1.100的域名www.a.com来访问时[http://www.a.com/flash.swf]将会被拒绝,因为flash不懂得dns解析:
to-ports:该属性值表明允许访问读取本域内容的socket连接端口范围。可使用to-ports="1100,1120-1125"这样的形式来限定端口范围,也可使用通配符(*)表示允许所有端口。
secure:该属性值指明信息是否经加密传输。当crossdomain.xml文件使用https加载时,secure默认设为true。此时将不允许flash传输非https加密内容。若手工设置为false则允许flash传输非https加密内容。
allow-access-from-identity:该节点配置跨域访问策略为允许有特定证书的来源跨域访问本域上的资源。每个allow-access-from-identity节点最多只能包含一个signatory子节点。
<allow-access-from-identity>
<signatory>
<certificate
fingerprint="01:23:45:67:89:ab:cd:ef:01:23:45:67:89:ab:cd:ef:01:23:45:67"
fingerprint-algorithm="sha-1"/>
</signatory>
</allow-access-from-identity>
allow-http-request-headers-from:此节点授权第三方域flash向本域发送用户定义的http头
allow-access-from节点授权第三域提取本域中的数据,而 allow-http-request-headers-from节点授权第三方域将数据以http头的形式发送到本域中。[简而言之,allow-access-from是控制读取权限,allow-http-request-headers-from是控制以http头形式的写入权限]
allow-http-request-headers-from包含三个属性:
·domain:作用及参数格式与allow-access-from节点中的domain类似。
·headers:以逗号隔开的列表,表明允许发送的http头。可用通配符(*)表示全部 http头。
·secure:作用及用法与allow-access-from节点中的secure相同。
在下面的示例中,任何域都可以向当前域发送 SOAPAction 标头:
<cross-domain-policy>
<allow-http-request-headers-from domain="*" headers="SOAPAction" />
</cross-domain-policy>
最后说明:
1)allow-access-from标签的domain属性检测:domain属性应根据最小化原则按需设置,仅允许可信任的来源跨域请求本域内容。禁止将该属性值设置为“*”。
2)allow-http-request-headers-from标签的domain属性检测:domain属性应根据最小化原则按需设置,仅允许可信任的来源向本域跨域发送内容。禁止将该属性值设置为“*”。
3) site-control标签的permitted-cross-domain-policies属性检测:根据业务的实际需求及可行性,对该属性做相应设置。禁止将该属性值设置为“all”。
相关推荐
跨域安全JAR包,避免使用JSONP,引入项目后可直接使用JSON返回
flex for arcgis java tomcat环境不能跨域问题 网上找了很多都不能解决我的问题,后来看帮助文档,提供了思路,希望能帮助同样被问题困扰的人。
这是我在前后台数据交互中遇到的跨域问题,我觉得作为刚接触跨域问题的开发者,看完我的文档后,会提升不少。
H5的video标签跨域.HTML的video标签跨域 我们都知道HTML video标签能播放视频 但是如果你的video要播放的是非当前域名下的视频文件,这就要跨域播放视频, 应该如何实现呢?
html通过 ajax jsonp跨域请求接收和传送数据 使用HTML页面与后台跨域交互,获得后台数据或传输数据给后台
NULL 博文链接:https://yangkd548.iteye.com/blog/653364
请用google浏览器打开,页面百分比缩小到百分之三十再访问。 1、 请在服务器上部署附件war 2、 将【两个工程.zip】压缩包中的webChart.war和jdbc2json.war上传至apache-tomcat-8.0.33/webapps下 ...
异构环境下无线传感大数据跨域传输安全控制系统设计.pdf
跨域的三个html例子 可是实现静态跨域
jquery ajax json 跨域不解释,代码很简单 没几句话
html 5 跨域进度问题。
有关跨域安全的一点资料,现在跨域存在很多不安全因素,怎么才能让你的网站更安全
提供flex跨域解决的办法 直接在根目录发布这个包就行了
支持跨域,mysql数据源,mapbox的pbf格式
云计算中跨域安全认证的关键技术研究.pdf
使用YQL获取json形式的html 然后用jsonp来实现ajax跨域 截取跨域的html网页
html2canvas js 框架 和 java设置代理解决图片跨域访问时不能生成图片的问题。 zip包含:设置代理使用跨域图片.docx,canvas2image.js,canvg.js,html2canvas.js,html2canvas.min.js,html2canvas.svg.min.js共6个...
1、 请在服务器上部署附件war 2、 将【两个工程.zip】压缩包中的webChart.war和jdbc2json.war上传至apache-tomcat-8.0.33/webapps下 3、 启动tomcat,~/apache-tomcat-8.0.33/bin/start.sh
项目开发过程中会遇到一个项目区调取另一个项目的现象,就是所说的跨域问题。跨域问题一开始解决方法时改代码,浪费大量的工作量。后来就是查阅大量资料写的这么个文档