flex 跨域访问问题
2012-08-21 11:24
330 查看
flex写的应用正式发布到Web容器(如tomcat、weblogic等)后,访问远程资源会遇到跨域访问的问题。
比如说:swf部署在域A(www.a.com)中,在swf中要访问域B(www.b.com)中的资源,就会遇到这
个问题。这里有些朋友可能会注意到在flex builder中测试时,对资源的访问是没有限制的,也就是说不
会遇到跨域访问的问题,确实是这样,这也许是adobe为了方便开发人员测试用的。
言归正传,如果遇到跨域访问的问题,那么flex会报安全沙箱的错误。下面分析下产生该问题的原因,及
解决方案。
跨域访问是flex的一个安全策略,当flex(这里可以看成是swf)去访问资源时,会首先检查服务端是否
配置crossdomain.xml文件(该文件是flex官方提供的跨域访问配置文件),如果没有则会报安全沙箱错误
提示访问失败,如果有,则继续读crossdomain.xml文件中的配置,看客户端是否有权限访问。通常该文件
的写法如下:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-controlpermitted-cross-domain-policies="all"/>
<allow-access-from domain="*"/>
</cross-domain-policy>
<allow-access-from domain="*"/>表示允许所有的swf访问该资源,要想限制只有某些域可以访问,可以
在此次配置相应的域名或IP即可。
另外需要注意必须在应用服务器的根目录中发布该文件,比如说应用服务器为tomcat,IP为192.168.11.11,
端口为8080则发布后在浏览器中输入:http://192.168.11.11:8080/crossdomain.xml应该能够看到该文件的内容
,这才说明发布成功。发布成功后,swf再访问资源就不会遇到跨域的问题了。
此外,如果不想通过在服务器上发布跨域文件的方式来解决问题,那么还有另外一种方法,思路是:
在swf的同一个域中写一个代理(可以用JS实现)去访问远程服务器上的资源,然后swf去访问代理,这样
也可以间接解决跨域访问的问题。
比如说:swf部署在域A(www.a.com)中,在swf中要访问域B(www.b.com)中的资源,就会遇到这
个问题。这里有些朋友可能会注意到在flex builder中测试时,对资源的访问是没有限制的,也就是说不
会遇到跨域访问的问题,确实是这样,这也许是adobe为了方便开发人员测试用的。
言归正传,如果遇到跨域访问的问题,那么flex会报安全沙箱的错误。下面分析下产生该问题的原因,及
解决方案。
跨域访问是flex的一个安全策略,当flex(这里可以看成是swf)去访问资源时,会首先检查服务端是否
配置crossdomain.xml文件(该文件是flex官方提供的跨域访问配置文件),如果没有则会报安全沙箱错误
提示访问失败,如果有,则继续读crossdomain.xml文件中的配置,看客户端是否有权限访问。通常该文件
的写法如下:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-controlpermitted-cross-domain-policies="all"/>
<allow-access-from domain="*"/>
</cross-domain-policy>
<allow-access-from domain="*"/>表示允许所有的swf访问该资源,要想限制只有某些域可以访问,可以
在此次配置相应的域名或IP即可。
另外需要注意必须在应用服务器的根目录中发布该文件,比如说应用服务器为tomcat,IP为192.168.11.11,
端口为8080则发布后在浏览器中输入:http://192.168.11.11:8080/crossdomain.xml应该能够看到该文件的内容
,这才说明发布成功。发布成功后,swf再访问资源就不会遇到跨域的问题了。
此外,如果不想通过在服务器上发布跨域文件的方式来解决问题,那么还有另外一种方法,思路是:
在swf的同一个域中写一个代理(可以用JS实现)去访问远程服务器上的资源,然后swf去访问代理,这样
也可以间接解决跨域访问的问题。
相关文章推荐
- Flex中跨域访问及#2048安全沙箱错误问题
- Flex 跨域访问问题
- Flex跨域访问的沙箱问题
- Flex跨域访问沙箱问题解决
- flex关于跨域访问会引起安全沙箱问题,下面是在网上找到的解决安全沙箱问题的方法
- Flex跨域访问的问题
- flex安全沙箱,跨域访问图片资源问题解决
- flex 跨域访问问题
- 解决:flex跨域访问的安全沙箱问题
- Flex项目中如何实现跨域访问问题
- 关于解决Flex跨域访问的沙箱冲突问题
- flex 跨域访问 #2048: 安全沙箱冲突 问题解决方法
- flex跨域访问遇到安全沙箱问题 (转帖)
- jquery+getJson+struts2, 跨域访问问题
- .net解决js访问服务器端,跨域访问的问题
- JSP嵌入FLEX SWF文件出现安全水箱,跨域访问的问题解决方案
- node js 解决跨域问题 ---vue axios 访问本地服务器端口报错问题
- Flex访问xml的命名空间问题
- 解决Ajax(jsonp)跨域访问问题
- WCF服务以控制台程序为宿主时的跨域访问问题(附源码)