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

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。

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

时间: 2024-10-15 23:56:00

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

加入域的计算机用户不能使用本地用户远程桌面登录本地计算机解决方法

今天有个学生,加入域的服务器WindowsServer2008R2开启了远程桌面,在本地使用远程桌面连接自己的IP地址,输入域管理员账户和密码能够连接成功,输入本地用户不能连接,我就让他在登录账户中输入server\han,就能成功. 他问我为啥?我说你的计算机加入域,就可以使用域用户登录或使用本地账户登录,你在登录的时候要明确指明你使用的账户是本地账户还是域账户,如果使用域账户登录要在登录名前加上域名称,比如你的域是91xueit.com,使用域账户登录需要91xueit\administra

几种常见的跨域原理的实现

一.什么是跨域? 1.什么是同源策略及其限制内容? 同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到 XSS.CSFR 等攻击.所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个 ip 地址,也非同源. 同源策略限制内容有: Cookie.LocalStorage.IndexedDB 等存储性内容 DOM 节点 AJAX 请求发送后,结果被浏览器拦截了 但是有三个标签是允许跨域加载资源: <img src=XXX&g

AD域内普通域用户在客户端对program files文件夹没写入权限的解决方法

在客户端以本地管理员帐户登录系统,将Program Files文件夹的所有者更改为domain users,然后再用domain users组内的用户登录客户端计算机,再对该文件夹进行权限设置.

Ajax跨域、Json跨域、Socket跨域和Canvas跨域等同源策略限制的解决方法

同源是指同样的协议.域名.port,三者都同样才属于同域.不符合上述定义的请求,则称为跨域. 相信每一个开发者都曾遇到过跨域请求的情况,尽管情况不一样,但问题的本质都能够归为浏览器出于安全考虑下的同源策略的限制. 跨域的情形有非常多,最常见的有Ajax跨域.Socket跨域和Canvas跨域.以下列举一些我们常见的跨域情形下.某些浏览器控制台给出的错误提示: FireFox下的提示: 已阻止交叉源请求:同源策略不同意读取***上的远程资源.能够将资源移动到同样的域名上或者启用 CORS 来解决问

jquery ajax跨域的完美解决方法(jsonp方式)

ajax跨域请求的问题,JQuery对于Ajax的跨域请求有两类解决方案,不过都是只支持get方式,接下来为大家详细介绍下客户端JQuery.ajax的调用代码 今天在项目中需要做远程数据加载并渲染页面,直到开发阶段才意识到ajax跨域请求的问题,隐约记得Jquery有提过一个ajax跨域请求的解决方式,于是即刻翻出Jquery的API出来研究,发 JQuery对于Ajax的跨域请求有两类解决方案,不过都是只支持get方式.分别是JQuery的 jquery.ajax jsonp格式和jquer

AJAX及其跨域的主要解决方法

AJAX = Asynchronous JavaScript andXML(异步的 JavaScript 和 XML).通过在后台与服务器进行少量数据交换,使网页实现异步更新.要明白异步交互可以通过同步和异步的对比很容易明白: 同步交互,就是最常见的click-refresh模式,点一个连接或提交一个表单,然后就必须重载整个页面 异步交互,javascript根据返回的数据,不刷新页面而改变当前页面的显示,例如:新浪微博,百度地图. Ajax的异步交互从XMLHttpRequest这个对象开始,

谷歌、火狐浏览器下实现JS跨域iframe高度自适应的完美解决方法,跨域调用JS不再是难题!

谷歌.火狐浏览器下实现JS跨域iframe高度自适应的解决方法 导读:今天开发的时候遇到个iframe自适应高度的问题,相信大家对这个不陌生,但是一般我们都是在同一个项目使用iframe嵌套页面,这个ifame高度自适应网上一搜一大把,今天要讲的如何在不同的网站下进行相互的调用跟在同一个网站下是一个效果:例如我在自己的项目里面Iframe  了第一博客的页面  http://www.diyibk.com/   当第一博客的页面高度变化了怎么通知父页面呢? 这个时候在谷歌下肯定是拿不到 ifram

Windows 10 1607(周年更新)后加入域无法使用WIndows Hello解决方法

一.问题现象 Windows 10客户端更新2016年8月3日的周年更新后,版本更新到了1607,加入域后(AD版本为Windows Server 2012 R2)Windows Hello设置为灰色,无法设置,提示"某些设置由你的组织来管理". 二.问题原因 由于Windows Server 2012 R2组策略中没有关于PIN登录的设置,Windows 10升级到1607版本后Windows 2012 R2默认是禁用PIN登录的.如果要启用Windows Hello功能,只需要通过

造成跨域的原因和解决方法

浏览器的同源策略是浏览器上为安全性考虑实施的非常重要的安全策略. 从一个域上加载的脚本不允许访问另外一个域的文档属性. 举个例子:比如一个恶意网站的页面通过iframe嵌入了银行的登录页面(二者不同源), 如果没有同源限制,恶意网页上的javascript脚本就可以在用户登录银行的时候获取用户名和密码. 何谓同源:URL由协议.域名.端口和路径组成,如果两个URL的协议.域名和端口相同,则表示它们同源. 在浏览器中,<script>.<img>.<iframe>.<