flex安全沙箱问题真的可以解决

本文详细解析了FlexBuilder中两个Servers的区别与联系,并针对Flex安全沙箱问题提供了具体解决方案,包括如何正确放置crossdomain.xml文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

域文件:

<cross-domain-policy>
    <site-control permitted-cross-domain-policies="all"/>
    <allow-access-from domain="*"/>
</cross-domain-policy>

 

很多人都写了关于Flex安全沙箱问题的解决办法,可是依然有很多人理解不了,因为我们按照他们的说法去做的
时候并不能解决问题,这是为什么?


首先了解FlexBuilder的两个Servers的区别和联系。


区别:因为FlexBuilder编辑器它里面包含了两个Servers,一个是用来发布java工程的,一个是用来发布Flex+
java工程的,毕竟Flex+java工程跟java工程还是有区别的,所以编辑器需要提供两个Servers分别用来发布对
应的工程,在编辑器的左下脚点击带有+号的图标,就会弹出来一个Show View对话框,然后在type filter 
text输入Servers就会出现两个Servers,一个是MyEclipse Java Enterprise文件下的Servers一个是Server文
件夹下的Servers,上面的那个Servers是用来发布java工程的,而下面的那个就是用来发布Flex+java工程的,
这个时候你只要点击它它就会在当前的编辑器中出现。


联系:
它们虽然是用来发布不同工程的,但是它们却可以使用同一个tomcat,比如你把自己的tomcat目录放在了c盘下
面,无论你是要在里面运行flex+j2ee项目还是要运行j2ee项目,你都要配置tomcat,那么在flex配置tomcat的时
候你就需要配置一个server来作为运行flex或者j2ee程序的容器,这个时候你可以试一下,首先在Myeclipse视
图下运行一个java Web项目,你会发现当你把web项目load进入myeclipse的server中的时候,你会发现它们已
经在你的tomcat所在的实际目录的webapps文件夹下面出现了;但是如果你在flex环境下运行一个flex+j2ee项
目,当你把项目load进入server的时候(注意这两个server是不一样的,见上一段两者的区别),你再去tomcat
的webapps目录下去看看,你会发现你所认为的事情没有发生,flex项目并没有被装入我们配置的tomcat的实际
位置里面,那么它被装进哪里去了呢?它被装入到如下的目录里面了:
F:\flex-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
也就是说它被装入到了开发环境的server中去了。由此可见,对于flex来说,它并没有使用flex的工作目录,而
只是使用了它的功能,但是它的工作目录是放在了编辑环境中的。


至此我们已经知道了,对于flex来说我们的工作的环境目录实际位置不是我们的tomcat位置。


那么对于安全沙箱问题的处理:我们看到网上有无数的答案告诉我们怎么做,是要把crossdomain.xml放到Root目
录下,可是是哪个root,实际上root目录总是让我们跟我们自己做的项目的WebContent/WebRoot目录混淆,其实根
本就没有什么WebContent/WebRoot目录,是的我承认在我们的编辑器能看到WebContent文件夹,在我们的workspace
里面我们也能够看到这个文件夹,但是开发是开发,发布是发布,发布的时候这个文件夹是不存在的,存在的只是
这个项目的名称和这个文件夹下的所有文件。


所以至此我们又知道了我们自己的项目中是不存在ROOT目录的,那么它存在于哪里呢?


试想我们的文件它放在哪里?它放在tomcat的webapps文件夹下面,所以而ROOT目录也正是在那个文件夹下面的,


好了现在我们知道了我们的项目运行测试的时候的位置了,也知道了ROOT目录这个混淆视听的文件夹位置了,那么我们应该把crossdomain.xml文件放到哪里呢?


你肯定已经知道答案了:
F:\flex-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\ROOT下面了。


补充:
我们在新建一个flex+j2ee项目的时候总是要修改一个地方那就是项目的properties里面的Flex Server试想为什么?你肯定能猜到,是的它的contex root默认的是WebContent实际上我们知道当项目被运行或者发布的时候根本就不存在这个文件夹的,所有的文件都是直接的存在于一个跟项目名称一样的文件下面的,所以说我们这个地方一定要修改成为跟我们项目名称一样的名字才正确,否则你运行肯定会出错的。


有的时候你新建了一个项目名称为test那么编辑器会自动的帮助你生成一个被设置为了默认启动的test.mxml文件,这个文件如果被你删除了,你有新建了其他文件比如:a.mxml文件并且没有设置为默认启动,那么你到项目的,properties里面去查看一下Flex Complier选项就会发现它的头上面一个大红色的X后面是:,F:\flex-workspace\student\flex_src\test.mxml你恍然间以为这个是一个天大的错误,其实不然,它就是找不到默认启动文件了,你把当前运行时要作为默认的启动文件的文件设置一下就好了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值