如何在Chrome中禁用CORB,解决本地GeoServer WMS服务跨源访问报错
解决OpenLayers调用本地GeoServer WMS服务的CORB报错问题
Cross-Origin Read Blocking (CORB) blocked cross-origin response 报错本质是本地前端页面的域名/端口和GeoServer服务的域名/端口不一致,触发了浏览器的同源策略限制,以下是两种可行解决方案:
方案1:配置GeoServer跨域(推荐所有开发、正式场景使用)
- 找到GeoServer安装目录下的
webapps/geoserver/WEB-INF/web.xml文件 - 取消文件中自带的CORS过滤器的注释,或者手动添加以下两段配置:
过滤器定义:
<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> <init-param> <param-name>cors.allowed.headers</param-name> <param-value>*</param-value> </init-param> </filter>
过滤器映射:
<filter-mapping> <filter-name>CorsFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
- 保存修改后的
web.xml文件,重启GeoServer服务,跨域配置即可生效 - 验证WMS图层加载:OpenLayers侧初始化WMS图层时,确认请求地址、图层工作空间+图层名、坐标系、服务版本参数和GeoServer发布的服务参数完全匹配,即可正常加载图层不会触发CORB报错
方案2:Chrome临时禁用CORB(仅本地开发测试使用,禁止用于线上环境)
该方式仅适合临时测试使用,不需要修改服务端配置,仅对当前启动的Chrome实例生效:
- Windows系统:关闭所有已打开的Chrome窗口,按下
Win+R打开运行窗口,输入以下命令回车启动Chrome:chrome.exe --disable-web-security --user-data-dir="C:\ChromeDevTemp" - Mac系统:关闭所有已打开的Chrome窗口,打开终端输入以下命令回车启动Chrome:
open -n /Applications/Google\ Chrome.app/ --args --disable-web-security --user-data-dir=/Users/当前系统用户名/ChromeDevTemp - Linux系统:关闭所有已打开的Chrome窗口,打开终端输入以下命令回车启动Chrome:
google-chrome --disable-web-security --user-data-dir=/home/当前系统用户名/ChromeDevTemp
启动后Chrome顶部会提示「您使用的是不受支持的命令行标记」属于正常现象,该浏览器实例不要用于访问公共网络站点,避免出现安全风险
内容的提问来源于stack exchange,提问作者Kaleab Woldemariam
相关产品推荐
相关产品推荐

