开发者社区> 李晓晖> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

WebLogic12.1.1中跨域问题的探讨以及几种常见中间件中跨域问题的解决方法

简介: 文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/。 1.问题描述 扬州现场中最开始安装了中间件WebLogic12.1.1版本,按照公司之前解决WebLogic12的方法,我们在中间件中发布了一个虚拟路径为/,根目目录文件为root的服务。
+关注继续查看

文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

1.问题描述

扬州现场中最开始安装了中间件WebLogic12.1.1版本,按照公司之前解决WebLogic12的方法,我们在中间件中发布了一个虚拟路径为/,根目目录文件为root的服务。

这个root文件中包含的文件如下:

 

  

在程序启动发起跨域访问时,出现了下面这个问题:

 

如图可见,我们虽然可以访问到crossdomain.xml,并且能得到里面的完整内容,可是程序无法走下去,后面Flash端的跨域访问无法被触发。

2.解决思路

2.1是否是crossdomain.xml内容不对

不同的Flash版本,对crossdomain.xml要求的写法可能不同。Flash9之后security机制有所改变。如果我们用Flex3访问老版本的crossdomain.xml可能会报出security error错误。网上有文章说Flash9之后的crossdomain.xml写法,allow-http-request-headers-from的配置是必须的。不过经过我自己的测试,发现即使不写这个配置,在tomcat下还是可以跨域成功的。

不过,我还是让现场工程人员将Flash换成了比较新的版本,然后crossdomain.xml也用的新版本。最后还是无法跨域成功。

2.2是否是其他配置有问题

经过在网上查找资料,发现对web.xml的配置也是有要求的。检查我们这个文件的的原始配置为:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app id="WebApp_1166189002905">

  <display-name>root</display-name>

  <!-- 首页文件名称 -->

  <welcome-file-list>

    <welcome-file>index.jsp</welcome-file>

  </welcome-file-list>

</web-app>

与网上建议的配置中缺少一个mime-mapping配置,于是我又在web.xml中添加了如下配置:

<mime-mapping>

 <extension>xml</extension>

 <mime-type>application/xml</mime-type>

  </mime-mapping>

再次发布root文件夹,然后发现这时候程序可以跨域成功了,结果如图所示:

 

3.为什么加入mime-mapping的探讨

我们之前发现,在WebLogic12.1.2中,不加入这个配置,跨域也是能成功的,可是在12.1.1中就不可以,究其原因可能是这个版本下不加上这个配置的话,WebLogic无法自动识别XML文件。

加入了这个配置后,在WebLogic12.1.2中,跨域也能正常。所以建议以后就用这个兼容版本的web.xml来配置WebLogic。

4.补充

4.1什么是跨域

跨域便是访问其他域名的文件或资源。举个例子,你的swf来至于A服务器,而swf中有一个请求是要访问B服务器的,于是在访问B服务器中的内容时,就需要先在B服务器上进行跨域。

4.2为什么要跨域

其实不仅仅是Flash,Javascript等一些脚本也有跨域的问题,这个主要是自身的安全机制所决定的,因为跨域访问一些文件或资源有一定的危险性,他超过了网站自身的范围,对于站外的资源无法审核其安全性,在网络病毒木马日益猖獗的今天,跨域限制访问是其安全策略的一个重要解决手段。

5其他中间件的跨域文件放置地址总结

5.1 tomcat

tomcat中的crossdomain.xml放置比较简单,地址是:apache-tomcat\webapps\ROOT。

5.2金蝶7.0

其放置地址是:Apusic-AS-7.0\domains\mydomain\applications\default\public_html。

5.3weblogic9.2

其放置地址是:..\user_projects\applications\domain1\server\examples\build\mainWebApp。

5.4与ArcGIS有关的中间件跨域

在Arcgis Server中我们也常遇到跨域问题。这里分为两种情况。

如果安装的是.net版本,则要在发布的IIS下放置crossdomain.xml文件。一般路径是C:/Inetpub/wwwroot。

如果安装的是Java版本,对于arcgis9.3版本,地址是:{arcgis安装目录}/ArcGIS/java/web_output。

对于arcgis10.0版本,地址是:{arcgis安装目录}\ArcGIS\Server10.0\java\manager\web_output。

对于arcgis10.1和10.2,具我观察,他们会在安装时便装有crossdomain.xml文件。其地址是:{ArcGIS Server安装目录 }\ArcGIS\Server\framework\runtime\tomcat\webapps\ROOT。

 

                                                                                  ----------欢迎转载,但保留版权,请在醒目处标明出处:http://www.cnblogs.com/naaoveGIS/

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
+关注
李晓晖
GISer、Coder、Dreamer
100
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载