urlloader urlrequest安全沙箱冲突

来源:互联网 发布:java 打包成exe 编辑:程序博客网 时间:2024/06/10 04:19

 需求:打开swf的时候.datagrid会自动请求远程服务拿取数据...
问题:使用urlloader及urlrequest.
    部分代码:
            var loader:URLLoader = new URLLoader();
    loader.dataFormat = URLLoaderDataFormat.BINARY;
    addListeners(loader,completeHandler,ioErrorHandler);
    var request:URLRequest = new URLRequest(url);
    request.contentType = "multipart/form-data";
    request.method = URLRequestMethod.POST;
    var bytes:ByteArray = new ByteArray();
            bytes.writeObject(dataMessage);//DataMessage为自定义的as对象
            request.data = bytes;
            try {
                loader.load(request);
            } catch (error:Error) {
                trace("Unable to load requested document."+error);
            }
            代码主要是用amf3对象流写到远程servlet.然后servlet会返回一个对象流.
        如果没有bytes.writeObject(dataMessage);这句代码的话.访问没有问题...但是加上之后就报错如下
       到 http://localhost:8006/wind/amf3 的连接已停止 - 不允许从 http://localhost:8006/main/login.swf 进行连接
        SecurityError: Error #2176: 某些动作(如显示弹出窗口的动作)只能通过用户交互来调用,例如,单击鼠标或按下按钮

        如果是跨域问题的话.我设置了crossdomain.xml在http://localhost:8006/crossdomain.xml和http://localhost:8006/wind/crossdomain.xml和
        http://localhost:8006/wind/amf3/crossdomain.xml.测试结果还是报一样的错.
小弟乃是flex新手.希望高手援助..万分感谢...

 

问题已解决...具体原因比较模糊..
解决方法:将request.contentType = "multipart/form-data";
         换成application/octet-stream.
初步理解:可能是因为flex对于multipart/form-data这样的contexttype内部设定安全权限必须是人为触发才可以...因为这个多是用来上传文件的吧大概...
有空再仔细研究研究...

原创粉丝点击