我正在构建一个基于OpenLayers的映射应用程序,该应用程序使用GeoServer来提供映射数据。我遇到的问题是,除了我通过WMS请求的地图图像之外,我还使用jQuery AJAX从GeoServer获取信息。当GeoServer在另一个端口上运行时,由于JavaScript中的跨站点脚本安全策略,我的请求被阻塞了。
作为一个Java应用程序,GeoServer在端口8080上运行在Apache上,而我的IIS实例运行在端口80上。我决定使用IIS7中的URL重写来解决这个问题,而不是构建代理。我正在跟踪本指南本指南,但它仍然不起作用。以下是我的URL重写规则设置:
(.*){HTTP_URL}匹配/geoserverhttp://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上的相同请求返回了正确的结果。
我做错了什么?提前谢谢。
发布于 2010-12-25 05:15:53
对于该条件,请尝试{URL}而不是{HTTP_URL},对于该操作,请确保它是重定向而不是重写。
发布于 2010-12-25 12:27:29
同样的规则是拿起8080的请求,并试图无限地重写它吗?虽然我认为超时或查询字符串长度错误是预期的结果,如果是的话,而不是404。
是否使用失败的请求跟踪?利用Fiddler?追踪http.sys?
https://serverfault.com/questions/216004
复制相似问题