WebLogic12.1.1中跨域問題的探討以及幾種常見中間件中跨域問題的解決方法

文章版權由做者李曉暉和博客園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/html

1.問題描述

揚州現場中最開始安裝了中間件WebLogic12.1.1版本,按照公司以前解決WebLogic12的方法,咱們在中間件中發佈了一個虛擬路徑爲/,根目目錄文件爲root的服務。java

這個root文件中包含的文件以下:web

 

  

在程序啓動發起跨域訪問時,出現了下面這個問題:apache

 

如圖可見,咱們雖然能夠訪問到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下仍是能夠跨域成功的。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">app

<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/

相關文章
相關標籤/搜索