Вывод информации для публикуемого слоя / CORS

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
HasT
Активный участник
Сообщения: 142
Зарегистрирован: 16 окт 2009, 22:08
Репутация: 55
Откуда: Харьков

Вывод информации для публикуемого слоя / CORS

Сообщение HasT » 28 окт 2014, 15:45

На карте (Leaflet) отображается WMS слой с полигональными объектами (слой в БД PostgreSQL/PostGIS, публикуется GeoServer'ом). Необходимо при клике на карте выводить информацию об объекте по заданному полю (не по всем) и отрисовывать границу полигона по которому был выполнен клик.
Для запроса атрибутов поля и координат для кликаемого объекта использую запрос следующего вида:

Код: Выделить всё

        map.addEventListener('click', onMapClick);

        function onMapClick(e) {

            var mapBounds = map.getBounds(),
                bbox = map.getBounds()._southWest.lng + "," + map.getBounds()._southWest.lat + "," + map.getBounds()._northEast.lng + "," + map.getBounds()._northEast.lat;

            $.ajax({
                    url: 'http://host:8080/geoserver/store/wms',
                    dataType: 'xml',
                    data: {
                        'tiled': true,
                        'LAYERS': 'store:layer',
                        'QUERY_LAYERS': 'store:layer',
                        'STYLES': '',
                        'SERVICE': 'WMS',
                        'VERSION': '1.1.1',
                        'REQUEST': 'GetFeatureInfo',
                        'BBOX': bbox,
                        'FEATURE_COUNT': '1',
                        'WIDTH': map.getSize().x,
                        'HEIGHT': map.getSize().y,
                        'FORMAT': 'image/png',
                        'INFO_FORMAT': 'application/vnd.ogc.gml',
                        'SRS': 'EPSG:4326',
                        'X': map.layerPointToContainerPoint(e.layerPoint).x,
                        'Y': map.layerPointToContainerPoint(e.layerPoint).y
                    }
                })
                .done(function(data) {

            if (data) {
                var $xml = $(data)
                    , original_coords = $xml.find('gml\\:coordinates, coordinates').text().split(' ')
                    , tt3 = $xml.find('store\\:tt3, tt3').text()    
					, tt4 = $xml.find('store\\:tt4, tt4').text();

					console.log(original_coords);
            }
                });
        };
Но при клике по карте получаю ошибку
Запрос из постороннего источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на http://host:8080/geoserver/store/wms?ti ... =915&Y=458. Это может быть исправлено путем перемещения ресурса в тот же домен или включением CORS.
Что необходимо настроить на GeoServer'e чтобы обойти ошибку CORS?

Аватара пользователя
SergeyRyzhkov
Гуру
Сообщения: 909
Зарегистрирован: 02 июл 2014, 19:13
Репутация: 203
Ваше звание: GP-экотеррористы
Откуда: Санкт-Петербург
Контактная информация:

Re: Вывод информации для публикуемого слоя / CORS

Сообщение SergeyRyzhkov » 28 окт 2014, 16:01

CORS позволяет приложениям на одном домене выполнять кросс-доменные AJAX запросы на другой домен.
Соответственно, необходимо "следить" и убедиться чтоб в заголовке было:

Код: Выделить всё

Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:http://....
Если этого нет, то надо подправить конфиг (web.xml) контейнера
Если Tomcat то пример здесь

HasT
Активный участник
Сообщения: 142
Зарегистрирован: 16 окт 2009, 22:08
Репутация: 55
Откуда: Харьков

Re: Вывод информации для публикуемого слоя / CORS

Сообщение HasT » 28 окт 2014, 19:00

SergeyRyzhkov писал(а):CORS позволяет приложениям на одном домене выполнять кросс-доменные AJAX запросы на другой домен.
Соответственно, необходимо "следить" и убедиться чтоб в заголовке было:

Код: Выделить всё

Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:http://....
Если этого нет, то надо подправить конфиг (web.xml) контейнера
Если Tomcat то пример здесь
Спасибо!
Подправил конфиг в web.xml файле для Apache Tomcat 6 + добавил файлы cors-filter-<version>.jar и java-property-utils-<version>.jar в lib каталог Apache Tomcat 6, - заработало.

Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость