在其他程序调用使用Geoserver时,可能会遇到跨域
如
Access to XMLHttpRequest at ‘http://localhost:8080/geoserver/gwc/service/tms/1.0.0/KylinWS:TestSC@EPSG:900913@pbf/8/203/150.pbf’ from origin ‘http://localhost:18189’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
以使用太乐地图WebGIS开发平台进行开发为例,
在使用太乐地图WebGIS开发平台 for Mapboxgl时,调用geoserver的MBtiles,遇到跨域的问题,导致地图看不到
Chrome中F12开发者模式中看到的错误
太乐地图mapboxgl示例页面也看不到地图
这是因为Geoserver或tomcat没有开启允许跨域访问。
两种方式发布GeoServer,分别是Jetty与Tomcat
两种方式跨域 cross origin 解决方法不同,看完继续看第三种解决方法
Jetty发布的解决方法
方法2:Tomcat发布的Geoserver跨域解决方法
To add CORS headers, I simply added to $CATALINA_HOME/conf/web.xml the following lines:
CorsFilter
org.apache.catalina.filters.CorsFilter
cors.allowed.origins
*
CorsFilter
/*
最后一种解决方法:
方法3:使用代理
自己写一个proxy.php,proxy.ashx,proxy.xxx
网上有许多代理的文章
跨域开启后,geoserver的矢量瓦片地图地图可以访问了
顺便分享一下太乐地图WebGIS开发平台访问geoserver的mbtiles的代码
var map, threeLayer, position = [104.07898, 30.66147];
mapboxgl.accessToken = 'pk.eyJ1IjoiYWhvY2V2YXIiLCJhIjoiRk1kMWZaSSJ9.E5BkluenyWQMsBLsuByrmg';
var simple = {
"version": 8,
"sprite":"http://" + window.location.host +"/examples/data/mbstyle/ArcTilerWeb/sprites/sprite",
"glyphs": "http://" + window.location.host + "/examples/data/mbstyle/ArcTilerWeb/fonts/{fontstack}/{range}.pbf",
"sources": {
"composite": {
"url": "mapbox://mapbox.mapbox-terrain-v2",
"type": "vector"
},
"esri": {
"type": "vector",
"scheme": "tms",
"tiles": [
"http://localhost:8080/geoserver/gwc/service/tms/1.0.0/KylinWS:TestSC@EPSG:900913@pbf/{z}/{x}/{y}.pbf"
]
},
},
"layers&#