[flex] urlloader urlrequest安全沙箱冲突
fxy060608
2009-02-02
需求:打开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新手.希望高手援助..万分感谢... |
|
andot
2009-02-03
你这个都是 http://localhost:8006 上的程序,不是跨域问题。
|
|
fxy060608
2009-02-03
感觉也不是跨域的问题...只是不知道是为什么老报这样的错..我希望的就是一打开就自动加载数据...如果增加一个按钮.点击按钮之后去加载是没有问题的.....但是很明显这是不现实的.我不能让用户每次都去点个按钮才能出来数据啊....请高手继续指点
|
|
fxy060608
2009-02-03
问题已解决...具体原因比较模糊..
解决方法:将request.contentType = "multipart/form-data"; 换成application/octet-stream. 初步理解:可能是因为flex对于multipart/form-data这样的contexttype内部设定安全权限必须是人为触发才可以...因为这个多是用来上传文件的吧大概... 有空再仔细研究研究... |
|
andot
2009-02-03
原来还有这么诡异的问题,如果不看你这个帖子,我这辈子都不会发现是这个问题,又学习了。
|