跪求解决AS3请求数据的“安全沙箱冲突”问题

跪求解决AS3请求数据的“安全沙箱冲突”问题,第1张

flash as3的socket默认是首先Security.loadPolicyFile("xmlsocket://"+ IP +":843")去找你服务器上843端口下的策略文件,你可以监听该端口,并给客户端返回'<?xml version="1.0"?>

<cross-domain-policy>

<allow-access-from domain="*" to-ports="*"/>

</cross-domain-policy>'字符串即可.你也可以在连接服务器之前用Security.loadPolicyFile("xmlsocket://"+ IP +":"+PORT)设置自己端口,别忘了给分哦。

。。可见提高对你项目的要求是使你学习更多知识的方法。 最常见的,我们有这样一个主swf(为了简单说明,再假设只有这么一个swf),另外我们有很多资源:jpg,png,xml,txt,swf等等,我们将之放在一个文件夹Resource下,然后将Resource和主swf放在同一个目录下,然后我们通过这个swf加载、访问这些资源,我们发现,非常没有问题。 然而,当我们最终需要将这个swf放在网页上,并且将那些资源都放在网页上,那么他们最好还是跟本地一样的文件结构存放,但是我们知道,网页上的swf肯定不会自己跑出来显示,肯定是要网页来加载他,在网页中通过"***.swf?p=...&p2=.."这样的方式来调用这个swf和传参数。如果这个网页也是和swf放在同一个文件夹下,那也是没问题的。可是我们有可能会有很多这样的网页,都放在一个文件夹很难管理,于是我们将他们放在不同的文件,这就会导致这样的问题:A网页是放在"../1/2/A",B网页是"../5/5/B",那么URLRequest的默认路径是哪个呢?是主swf所在的位置么?错,其实是看具体调用它的网页的地址,例如A调用时,URLRequest默认路径是"../1/2/",这样的话,如果我们URLRequest()时只会在A或B下面找,而不会在swf所在的目录中找,自然找不到。所以我们的做法是:获得主swf的绝对路径,将之作为URLRequest的路径。要想获得该swf的绝对路径,可以这样:test = stage.loaderInfo.url; 另外我们要将文件名去掉:在本机上,我们运行swf,得到的test的值为file:///C://test/test.swf,路径也就是file:///C://test/在本机上,我们运行同个目录下的html文件,发现沙箱问题、加载问题等等问题,test的值是file://C:\test\,这就难怪他找不到了 于是我们要改成:test .slice(0,test.lastIndexOf("\\")+1)注意,前面的\只是转义字符,实际上就是让路径遇到最后一个"\"时截止。这样的话按道理本机运行swf会有问题,但是实际上却是没有问题。。。 由于之前这个问题一直缠绕着我,导致我将它和安全沙箱问题混淆了,以为安全沙箱是多么恐怖的事情。 其实安全沙箱很简单:当两个不同文件夹下面的文件(这两个文件至少一个是swf)要通信时,会出现安全沙箱问题。可用下面的任意一个方法解决:

可能是要连接的swf代码是AS3的

而当前swf文件代码是AS2的

flash规定,AS3可以连接AS2或者AS3

但是,AS2只能连接AS2,不能连接AS3


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11286443.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存