今天碰到个奇怪问题,改了个页面标题再打包布署GeoServer发现调用WTMS服务失败,请求返回状态码200,返回包大小0,使用postman模拟请求是可以正常返回图片的。
跟之前版本对比如下:
正常Response请求:
xml
HTTP/1.1 200
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
geowebcache-tile-index: [13591, 9726, 14]
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
geowebcache-cache-result: HIT
geowebcache-tile-index: [13591, 9726, 14]
geowebcache-tile-bounds: 13205872.500935059,3752140.8439404294,13208318.485839844,3754586.828845214
geowebcache-gridset: EPSG:3857
geowebcache-crs: EPSG:3857
Last-Modified: Wed, 08 Jan 2025 03:40:58 GMT
Content-Disposition: inline; filename=geoserver-dispatch.image
Content-Type: image/png
Content-Length: 188615
Date: Thu, 27 Feb 2025 05:48:49 GMT
Keep-Alive: timeout=20
Connection: keep-alive
异常Response请求:
xml
HTTP/1.1 200
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
geowebcache-tile-index: [13591, 9726, 14]
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
geowebcache-cache-result: HIT
geowebcache-tile-index: [13591, 9726, 14]
geowebcache-tile-bounds: 13205872.500935059,3752140.8439404294,13208318.485839844,3754586.828845214
geowebcache-gridset: EPSG:3857
geowebcache-crs: EPSG:3857
Last-Modified: Wed, 08 Jan 2025 03:40:58 GMT
Content-Disposition: inline; filename=geoserver-dispatch.image
Content-Type: image/png
Content-Length: 188615
Date: Thu, 27 Feb 2025 05:48:49 GMT
Keep-Alive: timeout=20
Connection: keep-alive
发现异常中没有:Access-Control-Allow-Origin
才想起来之前好像配置过跨域:
修改跨域:web.xml
注意如果按deepseek推荐使用org.eclipse.jetty.servlets.CrossOriginFilter这个类需要添加jar包(jetty-servlets-9.4.56.v20240826.jar, jetty-util-9.4.56.v20240826.jar)
下面我推荐tomcat的,不用加jar包
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-mapping to enable CORS -->
<filter-mapping>
<filter-name>cross-origin</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
完了记录清理Tomcat缓存:apache-tomcat-8.5.99\work\Catalina\localhost
重启Tomcat就可以正常使用。
如果需要修改缓存目录,修改geoserver中web.xml,增加
xml
<context-param>
<param-name>GEOSERVER_DATA_DIR</param-name>
<param-value>E:\map\geoserver-2.15.0\webapps\geoserver\data</param-value>
</context-param>
<context-param>
<param-name>GEOWEBCACHE_CACHE_DIR</param-name>
<param-value>E:\map\geoserver-2.15.0\cache</param-value>
</context-param>