RIA跨域安全性浅谈(二)

 上篇写的十分加载一生堆http图片例子我要好测试没问题后发给了客户后,我之对讲机快速便响起了,用户说程序运行出错,奇怪我立马边怎么好的,通过互换发现用户是以上篇的小例子的swf程序部署于服务器上,通过http的不二法门运行此swf,而休是比如说我从来以FB里面调试运行。

Ajax 1Ajax 2View Code

SecurityError: Error #2122: 安全沙箱冲突:Loader.content:http://localhost:3000/HelloTWaver/flex_bin/demo.swf 不能访问 http://cache.mars.sina.com.cn/photoauto_d/model_index/0.jpg?1270088020。需要一个策略文件,但在加载此媒体时未设置 checkPolicyFile 标志。at flash.display::Loader/get content()

 Ajax 3

斯即便是顶级的RIA跨域访问限制问题,RIA我指的蕴藏Ajax、Flex、Silverlight甚至是匪署的Applet/JavaFx都会晤生那种范围,毕竟Flash作为RIA的先驱者,所将来来底那一个竞争兄弟也不得不包容Adobe的政策规则,简单说正常意况下RIA程序只同意看本域名下的资源信息,跨域访问它人的资源音讯时就需要看对方域名服务器定义的crossdomain.xml的脸色了,微软虽非常crossdomain.xml不了他以将了平等拟clientaccesspolicy.xml。

以下几独重大厂家的官方文档大家可参见一下
http://www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html
https://jdk6.dev.java.net/plugin2/#CROSSDOMAINXML
http://msdn.microsoft.com/en-us/library/cc838250(VS.95).aspx

对Ajax方面还有不少trickery的缓解技术以下多少个可以参见一下
http://easyxdm.net/
http://www.simple-talk.com/dotnet/asp.net/calling-cross-domain-web-services-in-ajax/
http://jquery-howto.blogspot.com/2009/04/cross-domain-ajax-querying-with-jquery.html
http://www.ajax-cross-domain.com/

哪没工夫细看怎么着布置成有允许,按照商事允许等等复杂的布,你得为此底两独十分给丁happy的部署当开测试,我相当烦这种布局的事物,想想jnlp的说道得以定义之良变态,但绝复杂的条条框框往往变得没规则,估量世上95%以上之jnlp都是,微软的Code
Access Security
(CAS)也改为了杯具,当年羁押CAS就来点头大,就预感这游戏意儿怎么可能普及下,简单是恒古不变的道理。

crossdomain.xml

Ajax 4Ajax 5View Code

1 <?xml version="1.0"?>
2 <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
3 <cross-domain-policy>
4   <allow-http-request-headers-from domain="*" headers="*"/>
5 </cross-domain-policy>

Ajax,clientaccesspolicy.xml

Ajax 6Ajax 7View Code

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <access-policy>
 3   <cross-domain-access>
 4     <policy>
 5       <allow-from http-request-headers="*">
 6         <domain uri="*"/>
 7       </allow-from>
 8       <grant-to>
 9         <resource path="/" include-subpaths="true"/>
10       </grant-to>
11     </policy>
12   </cross-domain-access>
13 </access-policy>

问题如还清清楚楚了,不过还有少数疑团,为啥自己之所以FlashBuilder跑的顺序能够正常运作无吃这该老的权限限制为?难道自己另外swf人品比较高,我试着将bin-debug目录下的swf文件移到其它目录一跑啊杀了,难道还得在FB工程的目录里,查了一下意识还有以下道道,我就不赘述了大家省图虽精通了。

http://kb2.adobe.com/cps/518/cpsid_51814.html
Each time you create or import a Flash Builder project whose bin-debug
directory is outside of the normal Flash Builder workspace location,
Flash Builder adds that bin-debug directory to the list of trusted
directories;

Ajax 8

相关文章