欢迎光临散文网 会员登陆 & 注册

Geoserver跨域设置

2023-03-02 09:24 作者:地理信息技术杂谈  | 我要投稿

服务端发布的服务,在未设置允许跨域时,从其他域前端访问时,会显示跨域错误,同时也不能访问到数据。

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

Geoserver跨域设置的评论 (共 条)

分享到微博请遵守国家法律