Apache-2.2

IIS 7 URL 重寫到在 Apache 上執行的 GeoServer

  • December 25, 2010

我正在建構一個基於 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?

引用自:https://serverfault.com/questions/216004