Я создаю картографическое приложение на основе OpenLayers, которое использует GeoServer для обслуживания картографических данных. Проблема в том, что помимо изображений карт, которые я запрашиваю через WMS, я использую jQuery AJAX для получения информации из GeoServer. Поскольку GeoServer работает на другом порту, мои запросы блокируются из-за политик безопасности межсайтового скриптинга в JavaScript.
Как приложение Java,GeoServer работает на Apache на порту 8080, в то время как мой экземпляр IIS работает на порту 80.. Вместо того, чтобы создавать прокси, я решилиспользовать URL Rewriting в IIS7чтобы исправить эту проблему. Я следуюэто руководство, но это все еще не работает. Вот мои настройки правила URL Rewrite:
- Соответствует 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.
Используете ли вы трассировку неудачных запросов? Используете Fiddler? Трассировка http.sys?