将IIS 7 URL重写为在Apache上运行的GeoServer

我正在构build一个基于OpenLayers的地图应用程序,它使用GeoServer来提供地图数据。 我遇到的问题是,除了通过WMS请求的地图图像外,我使用jQuery AJAX从GeoServer获取信息。 由于GeoServer运行在不同的端口,因为JavaScript中的跨站点脚本安全策略,我的请求被阻止。

作为Java应用程序, GeoServer在端口8080上运行在Apache上,而我的IIS实例在端口80上运行 。 我决定在IIS7中使用URL重写来解决这个问题,而不是build立一个代理。 我遵循这个指南 ,但它仍然不工作。 这是我的URL重写规则设置:

  • 匹配url(.*)
  • 条件{HTTP_URL}匹配/geoserver
  • 操作 :重写为http://localhost:8080/{R:1} ,附加查询string

当我请求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,尽pipe8080端口上的相同请求返回了正确的结果。

我究竟做错了什么? 提前致谢。

对于这种情况,请尝试使用{URL}而不是{HTTP_URL},对于该操作,请确保它是redirect而不是重写。

是相同的规则拿起8080的请求,并试图改写它无限? 虽然我认为超时或查询string长度错误将是预期的结果,如果是,而不是404。

你使用失败的请求追踪? 使用小提琴手? 跟踪http.sys?