flex SecurityError: Error #2048: 安全沙箱冲突

时间:2022-08-28 15:18:59
发布了flex的网站,访问时提示SecurityError: Error #2048: 安全沙箱冲突:http://localhost:8086/index.swf 不能从 http://www-c8d8bc651c4/ArcGIS/rest/services/zhengzhou/MapServer?f=json 加载数据。
网上都说把crossdomain.xml文件放到发布的gis服务根目录和发布网站的根目录,我都放了,但是还是不行,还是报这样的错误,请高手帮帮忙,一个星期了!

14 个解决方案

#2


看不懂他们写的什么啊,能跟个具体的方法吗?

#3


高手帮帮忙啊

#4


建议使用wireshark抓包,看通信的时候,有没有读取你的crossdomain.xml文件?然后再确认你的文件内容是否正确。。

#5


crossdomain.xml放在哪都没关系

关键是要和Security.loadPolicyFile("加载路径url")中url匹配

检查crossdomain.xml是否读取到(浏览器里输入上面url)

或者更直接一点,将crossdomain.xml中的内容复制出来,在代码中以字符串形式发送到客户端

那就不用放那个文件了~~~

#6


引用 5 楼 leemiki 的回复:
crossdomain.xml放在哪都没关系

关键是要和Security.loadPolicyFile("加载路径url")中url匹配

检查crossdomain.xml是否读取到(浏览器里输入上面url)

或者更直接一点,将crossdomain.xml中的内容复制出来,在代码中以字符串形式发送到客户端

那就不用放那个文件了~~~

在浏览器中能获取到那个xml,但是还不行

#7


或者更直接一点,将crossdomain.xml中的内容复制出来,在代码中以字符串形式发送到客户端

这个怎么实现啊?

#8


后台是java的么

#10


引用 7 楼 pandy_peng 的回复:
或者更直接一点,将crossdomain.xml中的内容复制出来,在代码中以字符串形式发送到客户端

这个怎么实现啊?

解决跨域问题的原理就是服务端将 <policy-file-request />发送到客户端

客户端接收后就有权限访问服务端资源

Security.loadPolicyFile(url);这种方式其实就是读取crossdomain.xml中配置的允许远程访问的地址

然后依次向这些地址发送<policy-file-request />

基于上述原理,在代码中直接往某个地址发送<policy-file-request />即可

(可以开辟一个socket通道发送,太常见了不多说,不会自己google吧)

#11


非常感谢各位的热心帮助,我在同事的帮助下解决了,现在把我的方法分享给大家,希望可以帮助其他的朋友,具体情况我已写入我的博客,我的博客是
http://hi.baidu.com/百王朋度/blog/item/b06acbd74b5eb1d551da4b87.html

#12


该回复于2010-12-09 10:39:52被版主删除

#13


将crossdomain.xml文件放置到根目录下。
这个根目录不能直接放到服务端的根文件夹下就可以了,比如tomcat,假如直接放到tomcat的webapps下,通过浏览器访问http://ip:port/crossdomain.xml是无法访问到crossdomain文件的,所以需要放置到逻辑根目录下,tomcat的访问地址根目录在./webapps/ROOT/下。所以将crossdomain.xml放置到这个目录下,就可以访问crossdomain文件,也一般能够解决2048的安全沙箱错误。

#14


顶楼上 解决了

#1


#2


看不懂他们写的什么啊,能跟个具体的方法吗?

#3


高手帮帮忙啊

#4


建议使用wireshark抓包,看通信的时候,有没有读取你的crossdomain.xml文件?然后再确认你的文件内容是否正确。。

#5


crossdomain.xml放在哪都没关系

关键是要和Security.loadPolicyFile("加载路径url")中url匹配

检查crossdomain.xml是否读取到(浏览器里输入上面url)

或者更直接一点,将crossdomain.xml中的内容复制出来,在代码中以字符串形式发送到客户端

那就不用放那个文件了~~~

#6


引用 5 楼 leemiki 的回复:
crossdomain.xml放在哪都没关系

关键是要和Security.loadPolicyFile("加载路径url")中url匹配

检查crossdomain.xml是否读取到(浏览器里输入上面url)

或者更直接一点,将crossdomain.xml中的内容复制出来,在代码中以字符串形式发送到客户端

那就不用放那个文件了~~~

在浏览器中能获取到那个xml,但是还不行

#7


或者更直接一点,将crossdomain.xml中的内容复制出来,在代码中以字符串形式发送到客户端

这个怎么实现啊?

#8


后台是java的么

#9


#10


引用 7 楼 pandy_peng 的回复:
或者更直接一点,将crossdomain.xml中的内容复制出来,在代码中以字符串形式发送到客户端

这个怎么实现啊?

解决跨域问题的原理就是服务端将 <policy-file-request />发送到客户端

客户端接收后就有权限访问服务端资源

Security.loadPolicyFile(url);这种方式其实就是读取crossdomain.xml中配置的允许远程访问的地址

然后依次向这些地址发送<policy-file-request />

基于上述原理,在代码中直接往某个地址发送<policy-file-request />即可

(可以开辟一个socket通道发送,太常见了不多说,不会自己google吧)

#11


非常感谢各位的热心帮助,我在同事的帮助下解决了,现在把我的方法分享给大家,希望可以帮助其他的朋友,具体情况我已写入我的博客,我的博客是
http://hi.baidu.com/百王朋度/blog/item/b06acbd74b5eb1d551da4b87.html

#12


该回复于2010-12-09 10:39:52被版主删除

#13


将crossdomain.xml文件放置到根目录下。
这个根目录不能直接放到服务端的根文件夹下就可以了,比如tomcat,假如直接放到tomcat的webapps下,通过浏览器访问http://ip:port/crossdomain.xml是无法访问到crossdomain文件的,所以需要放置到逻辑根目录下,tomcat的访问地址根目录在./webapps/ROOT/下。所以将crossdomain.xml放置到这个目录下,就可以访问crossdomain文件,也一般能够解决2048的安全沙箱错误。

#14


顶楼上 解决了