网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 后端开发 > Java >

【开发问题】GeoServer 跨域问题解决方案

时间:2025-10-22 17:16

人气:

作者:admin

标签:

导读:本文详细介绍了如何配置 GeoServer 以解决跨域访问问题,包括复制必要的 JAR 文件到指定目录并修改 web.xml 配置文件。...

by emanjusaka from https://www.emanjusaka.com/archives/geoserver-cross-error 彼岸花开可奈何
本文为原创文章,可能会更新知识点以及修正文中的一些错误,全文转载请保留原文地址,避免产生因未即时修正导致的误导。

博客:https://www.emanjusaka.com
博客园:https://www.cnblogs.com/emanjusaka
公众号:emanjusaka的编程栈

geoserver 默认是没有开启跨域配置的,我们在启动了 geoserver 服务,发布地图图层后。前端项目想要访问服务因为 IP 和端口不一致会造成跨域问题导致我们访问服务报错。

[Error] Cannot load image http://192.168.1.200:8080/geoserver/img/wms?REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&FORMAT=image%2Fpng&STYLES=&TRANSPARENT=TRUE&LAYERS=img%3Amap_03dbe5d1&CRS=EPSG%3A4326&serverType=geoserver&WIDTH=1032&HEIGHT=1491&SRS=EPSG%3A4326&BBOX=0.0006271289520698164%2C-0.10890253786480741%2C0.08920439945988232%2C0.019071018653747274 due to access control checks.
[Error] Failed to load resource: Origin http://192.168.1.200 is not allowed by Access-Control-Allow-Origin. Status code: 200 (wms, line 0)

下面给出怎么配置开启 geoserver 允许跨域访问。

下载安装geoserver

官网地址

issue-7-1

一般我们选择稳定版就好了,2.28.0 不再支持 jdk8 了,如果需要 jdk8 的需要下载旧版本的 geoserver。

Nightly 版即夜间构建版,是开发团队通过自动化系统每日编译的软件版本。我们一般不选 Nightly 版本。

image-20251016133539847

这里选第一个就好了,通过 jar 包启动,全平台都可用。

下载后文件目录如下图所示:

image-20251016133718737

进入bin目录里面有启动脚本,Windows 平台启动 bat 脚本,Mac/Linux 平台启动 sh 脚本即可。

默认启动是不支持跨域的,下面我们来配置跨域。

配置跨域

  1. 进入 geoserver 目录下的 lib 文件夹,将其中的

    jetty-servlets-9.4.57.v20241219.jarjetty-util-9.4.57.v20241219.jar

    复制到 geoserver/webapps/geoserver/WEB-INF/lib

    image-20251016134415366

image-20251016134425437

这里有文章说去别的地方去下载这两个jar 包然后放到webapps/geoserver/WEB-INF/lib下,这里是没必要去下载的,geoserver 中已经包含有这两个 jar包了,复制过去就好了。自己去下载还要考虑版本问题,用 geoserver 自己版本一定是兼容的。

  1. 修改geoserver/webapps/geoserver/WEB-INF目录下的 web.xml 文件

    可以直接新增以下配置

        <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>
        <filter-mapping>
            <filter-name>cross-origin</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    

    也可以打开 web.xml 配置文件中的注释,这些配置已经存在了只不过是被注释了。

    image-20251016135403929

    image-20251016135444700

    其中一部分配置大概位置在 143 行到 162 行。剩下的在 197 行到 162 行。

    这里要注意只需要打开通过 Jetty 配置跨域,通过 Tomcat 配置跨域不需要打开。因为我们只复制了 Jetty 相关的 jar包,如果打开了 Tomcat 的配置会因为缺少 jar 包而报错。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信