GeoServer 开启CORS跨域请求访问

GeoServer官方文档的方法

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

<web-app>
  <!--...-->
  <filter>
      <filter-name>cross-origin</filter-name>
      <filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
  </filter>
  <filter-mapping>
      <filter-name>cross-origin</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>
  <!--...-->
</web-app>

基于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
中添加以下内容:

<web-app>
    <!--...-->
    <filter>
      <filter-name>CorsFilter</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,HEAD,OPTIONS,PUT</param-value>
    </init-param>   
    </filter>
    <filter-mapping>
      <filter-name>CorsFilter</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!--...-->
</web-app>

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

参考文章

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

推荐阅读更多精彩内容

  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong阅读 17,495评论 1 89
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 118,062评论 14 132
  • 1 目录结构 /bin:脚本文件目录。 /common/lib:存放所有web项目都可以访问的公共jar包(使用C...
    SkTj阅读 2,813评论 0 3
  • 说起泰山之旅, 我只想到俩个字:坎坷。 一、初入泰山—被骗。 可能是之前没做好攻略,一下火车就不知道去哪了。我们三...
    我怀念的9阅读 94评论 0 2
  • 活到了20岁,却想叫个“苦”字。苦,自然是心里苦。 前几天父亲意外去世,一家人天天以泪洗脸。哀怨上天的不公,上帝的...
    两个朋友阅读 34评论 0 0