IIS 7 URL 重寫到在 Apache 上執行的 GeoServer
我正在建構一個基於 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 上的相同請求返回了正確的結果。我究竟做錯了什麼? 提前致謝。
對於條件,請嘗試 {URL} 而不是 {HTTP_URL},並且對於操作,請確保它是重定向而不是重寫。
相同的規則是否會接收 8080 的請求並嘗試無限地重寫它?儘管我認為超時或查詢字元串長度錯誤將是預期的結果,而不是 404。
您是否使用失敗的請求跟踪?使用提琴手?跟踪http.sys?