1、问题描述
在使用geoserver搭建的gis服务过程中,在利用WMS请求相关图层时,出现了多个“Cross-Origin Read Blocking (CORB)已屏蔽 MIME 类型为 text/xml 的跨域响应”的跨域提示,造成图层没有呈现出来。
2、解决方法
经过查询资料,通过修改geoserver的配置文件和扩展jar可以实现跨域响应的问题。
3、解决过程
第一步,如果geoserver服务正在运行,建议先关闭geoserver服务;
第二部,打开geoserver\WEB-INF目需下的web.xml文件,修改相关的配置;
a、修改filter节点
首先查找“Uncomment following filter to enable CORS in Jetty. Do not forget the second config block further down”,拿掉filter节点的注释符,结果如下所示:
<!-- Uncomment following filter to enable CORS in Jetty. Do not forget the second config block further down.-->
<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>
b、修改filter-mapping节点
首先查找“Uncomment following filter to enable CORS”,拿掉filter-mapping节点的注释,结果如下所示:
<!-- Uncomment following filter to enable CORS-->
<filter-mapping>
<filter-name>cross-origin</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
第三、保存web.xml文件;
第四、下载geoserver对应的jar包,这里主要下载jetty.servlets和jetty-util,根据geoserver的版本,我这里主要下载了jetty-servlets-9.4.36.v20210114.jar和jetty-util-9.4.36.v20210114.jar,把这两个jar包上传到\geoserver\WEB-INF\lib目录下;
第五、重启geoserver服务。