flex 跨域访问解决方案的总结

其实解决方案网上的资料很多,都是添加一个策略文件crossdomain.xml,本文主要是介绍怎么加这个文件。

crossdomain.xml文件内容(*号部分自己可根据需要进行配置):




   
   

 

首先,明确一点,A应用要请求B应用的资源,这个策略文件是要添加到B应用的,刚开始,看了某些博文说是要添加到A应用,误导了我很久。

 

下面是正文

1.tomcat服务器的配置方式很简单,直接把文件丢到webapps/ROOT下,前提是保证tomcat 的webapps目录结构完整

 

2.主要讲讲weblogic(我的版本是12C)的配置,有点麻烦,最后的成功是反复测试测出来的,具体的原理本人也不是很懂。

1)给B应用所在的服务器添加一个默认应用C,

也就是只要输入http://xxxx:7001/后面不需要加项目上下文就能访问的应用。我的做法是通过服务器后台console进行配置,这个稍后再说。

新建一个项目index,

index

    --WEB-INF

             --web.xml

    --crossdomain.xml

    --index.jsp

有博文说在index项目根目录下添加weblogic.xml文件,内容设置为

//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">

 
    true
    text/x-cross-domain-policy
 

  /

 

但我试了没成功,所以我的目录就这么简单,附下文件内容,都很简单的:

web.xml:



" "http://java.sun.com/dtd/web-app_2_3.dtd">


        index.jsp
    

 

 

2)配置服务器默认应用
在Weblogic控制台中,Admin Console -> Servers -> DefaultServer(AdminServer) -> Protocols -> HTTP -> Default WebApp Context Root:修改为Web应用的 Java EE Web Context Root(这里即项目名称index),保存,不需要重启Weblogic。
但是在我的实际情况中,我觉得很坑但是很重要很关键的一点是,每次对index项目进行操作,比如stop掉再start、update甚至重启整个weblogic,配置默认应用的操作都要重新来一次,即使默认应用已经是index,你还是需要先把它置空,保存,再填进去,再保存,否则,你是不能通过http://xxxx:7001/去访问index应用的,结果会是404,而http://xxxx:7001/index可以的。
我不懂weblogic的原理,也就不知道这种情况究竟是个BUG还是我自己的问题,待以后再慢慢研究吧
3)如上,如果默认应用能正常访问了,接下来通过A应用去调用B应用,自然也就能够成功,反之,则会报大家遇到的”安全沙箱冲突 “的错误

 

参考资料:

 

http://support.esrichina-bj.cn/2009/0720/456.html
http://linuxstuding.iteye.com/blog/1224107

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(flex,weblogic,跨域)