GeoServer tomcat 跨域问题解决

用Openlayers访问GeoServer发布的矢量切片是,出现跨域访问问题,即 CORS 头缺少 'Access-Control-Allow-Origin
环境版本是:tomcat-9.0.41,GeoServer 2.18.1,OpenLayers 6.4.3,
通过查找GeoServer官方文档,修改GeoServer默认配置,实现跨域访问GeoServer服务,方法如下:
在tomcat服务部署文件中 找到Geoserver服务安装目录下WEB-INF文件夹的web.xml文件(D:...\apache-tomcat-9.0.41\webapps\geoserver\WEB-INF\web.xml)
找到下面两段被注释代码,并解除注释

<!-- Uncomment following filter to enable CORS in Tomcat. Do not forget the second config block further down.
    <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>
-->

<!-- Uncomment following filter to enable CORS 
    <filter-mapping>
        <filter-name>cross-origin</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
-->

注意:上面的第一段代码实现在tomcat服务器上,允许GeoServer跨域访问的。在该web.xml文件中,同样注释了Jett服务器上,允许GeoServer跨域访问的代码,经测试,只能取消相应服务器的允许跨域访问注释,不然会出现不能运行GeoServer服务的问题

上述方法是修改GeoServer的配置实现跨域,也可以通过修改tomcat服务实现允许访问,方法如下:

  1. 下载 cors-filter.jar 和 java-property-utils.jar,地址如下
    https://mvnrepository.com/artifact/com.thetransactioncompany/cors-filter/2.9.1
    https://mvnrepository.com/artifact/com.thetransactioncompany/java-property-utils/1.16
  2. 将下载的两个 jar包 拷贝至 tomcat 的安装路径下 lib文件夹中,如:D:...\apache-tomcat-9.0.41\lib

最后,重启 tomcat,解决问题

posted @   lqqgis  阅读(1707)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示