我正在建立一個基於 OpenLayers 的地圖應用程序,它使用 GeoServer 來提供地圖資料。我遇到的問題是,除了透過 WMS 請求的地圖圖像之外,我還使用 jQuery AJAX 從 GeoServer 獲取資訊。由於 GeoServer 在不同的連接埠上運行,我的請求由於 JavaScript 中的跨站點腳本安全性策略而被阻止。
作為一個 Java 應用程序,GeoServer 在 Apache 的連接埠 8080 上運行,而我的 IIS 實例在連接埠 80 上運行。我決定不再建構代理在 IIS7 中使用 URL 重寫解決這個問題。我正在跟進本指南,但仍然不起作用。以下是我的 URL 重寫規則設定:
- 匹配網址:
(.*)
- 狀態:
{HTTP_URL}
匹配/geoserver
- 行動:重寫為
http://localhost:8080/{R:1}
,附加查詢字串
然而,當我請求 時http://localhost/geoserver/wms?QUERY_LAYERS=SanDiego:FWSA_sandiego&LAYERS=SanDiego:FWSA_sandiego&SERVICE=WMS&VERSION=1.1.1&FEATURE_COUNT=20&REQUEST=GetFeatureInfo&EXCEPTIONS=application/vnd.ogc.se_xml&BBOX=-13009123.590156,3862057.2905992,-13006066.109025,3865114.7717302&INFO_FORMAT=text/html&x=20&y=20&width=40&height=40&srs=EPSG:900913
,我得到的只是 404,儘管在連接埠 8080 上的相同請求返回了正確的結果。
我究竟做錯了什麼? 提前致謝。
答案1
對於條件,請嘗試使用 {URL} 而不是 {HTTP_URL},對於操作,請確保它是重定向而不是重寫。
答案2
是否同樣的規則接收 8080 的請求並嘗試無限地重寫它?儘管我認為超時或查詢字串長度錯誤將是預期的結果,而不是 404。
您是否使用失敗請求追蹤?使用提琴手?追蹤http.sys?