Geoserver跨域设置
原创
©著作权归作者所有:来自51CTO博客作者GIS技术杂谈的原创作品,请联系作者获取转载授权,否则将追究法律责任
服务端发布的服务,在未设置允许跨域时,从其他域前端访问时,会显示跨域错误,同时也不能访问到数据。
Geoserver安装完成时,默认未开启允许跨域,直接从其他域用前端的地图类库访问数据时,会访问不到数据,需要手动进行开启。
开启的方法:
在Geoserver安装完成的目录中,打开配置文件,路径是:
webapps/geoserver/WEB-INF/web.xml
使用jetty作为Server时,将以下内容取消注释:
<filter>
<filter-name>cross-origin</filter-name>
<filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
<init-param>
<param-name>chainPreflight</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>allowedOrigins</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>allowedMethods</param-name>
<param-value>GET,POST,PUT,DELETE,HEAD,OPTIONS</param-value>
</init-param>
<init-param>
<param-name>allowedHeaders</param-name>
<param-value>*</param-value>
</init-param>
</filter>
使用Tomcat作为Server时,将以下内容取消注释:
<filter>
<filter-name>cross-origin</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.methods</param-name>
<param-value>GET,POST,PUT,DELETE,HEAD,OPTIONS</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.headers</param-name>
<param-value>*</param-value>
</init-param>
</filter>
同时,无论使用何种Server,都将以下代码取消注释:
<filter-mapping>
<filter-name>cross-origin</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
或者,使用前端的web server进行代理,加上允许跨域的头,也可行。
参考内容:
https://docs.geoserver.org/latest/en/user/production/container.html#production-container-enable-cors