close
文章出處

文章版權由作者李曉暉和博客園共有,若轉載請于明顯處標明出處: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/


不含病毒。www.avast.com
arrow
arrow
    全站熱搜

    AutoPoster 發表在 痞客邦 留言(0) 人氣()