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