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