GeoServer 开启CORS跨域请求访问

GeoServer官方文档的方法

GeoServer的官方文档中有给出GeoServer
开启CORS跨域请求访问的方法,即在webapps/geoserver/WEB-INF/web.xml路径下将以下内容取消注释:


  
  
      cross-origin
      org.eclipse.jetty.servlets.CrossOriginFilter
  
  
      cross-origin
      /*
  
  

基于Tomcat容器的方法

实际使用过程中我们可能会遇到一个问题,正如官方文档中所说,独立安装版的GeoServer是基于Jetty这个应用容器的,而如果GeoServer是运行在其他应用容器中
(比如Apache Tomcat),则上述做法会使得GeoServer无法运行,控制台报错:

SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.startInternal One or more Filters failed to
start. Full details will be found in the appropriate container log file

大致意思就是说有一个Filter无法正常启动,导致应用无法正常运行。

我所使用的GeoServer是基于Tomcat自行构建的,因此开启CORS的方式会有一些不同。具体做法是在webapps/geoserver/WEB-INF/web.xml
中添加以下内容:


    
    
      CorsFilter
      org.apache.catalina.filters.CorsFilter
      
        cors.allowed.origins
        *
      
    
      cors.allowed.methods
      GET,POST,HEAD,OPTIONS,PUT
       
    
    
      CorsFilter
      /*
    
    

官方文档写得没有错,但是没有考虑到其他的情况。而我盲目地套用官方文档的做法,不分清实际情况,使得被这个问题所困扰。

参考文章

  • Can't access GeoServer after CORS filter
  • CORS - Tomcat - Geoserver
  • CORS on Tomcat

原文地址: http://www.trojx.me/2018/08/07/geoserver-cors/index.html

你可能感兴趣的:(GeoServer 开启CORS跨域请求访问)