Flex缺乏策略文件权限问题
今天遇到的一个问题,读取网站上的一个XML文件被拒绝,错误描述如下:
*** 安全沙箱冲突 ***
到127.0.0.1:8080的连接已停止 - 不允许从d:/flex/work/bin_debug/work.swf进行连接
错误:拒绝请求位于 http://127.0.0.1:8080/php/work.xml 的资源(请求者从d:/flex/work/bin_debug/work.swf发出请求),原因是缺乏策略文件权限。
跨域访问需要配置策略文件,http://localhost:8080和http://127.0.0.1:8080被看做是不同的域,写个crossdomain.xml,放到站点根目录下:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy
SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
这里的"*"指的是允许所有站点的访问,你可以自己指定,把localhost,127.0.0.1都写到allow-access-from 里面的domain属性中.
相关文档:
首先要有一个简易的服务器,建立一个站点,然后站点下存放
1:crossdomain.xml 这个是跨与域策略文件,用于指定域通过Flash
Player访问本域的资源(如果服务器在本机就没有这个必要)但是远程的话就要(建议要)
文件内容:
<cross-domain-policy>
<allow-access-from domain="*" /> ......
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Script>
<!--[CDATA[
import mx.rpc.ev ......
1.监听事件时用弱引用方式(特别是对Applicatiion.applicaion和Stage的事件监听),方式如下:第五个参数值为true
Application.application.addEventListener(MouseEvent.CLICK,doClick,false,0,true);
2.集合类如Array和Dictionary里的元素,在不用的时候要设置为null;(尤其是主页面上的集合类),如:myMap[o]=null;
3. ......
最终我决定还是用“隐藏”这个不是很合适的词。mx_internal是一个自定义命名空间,至于“命名空间”到底是什么就不在这里说了。总之,当我们在代码头部写上:
use namespace mx_internal
(如果是.AS文件,需要手动import mx.core.mx_internal,注意这个不会有代码提示)
那么所有以mx_internal为命 ......