GeoServer 2.22.0中SimpleFeatureSource实现类请求头未更新问题
我们在项目中使用GeoServer 2.22.0,通过实现org.geotools.data.simple.SimpleFeatureSource类包装常规JDBC要素源,以此应用自定义过滤器。该实现类依赖GeoServer请求头内容的正确性,但发现首次请求处理后,后续请求中需要更新的请求头内容并未按预期更新,疑似GeoServer缓存了请求头信息。
具体实现
重写了getFeatures方法:
@Override public SimpleFeatureCollection getFeatures(Query query) throws IOException;
实现代码细节:
public SimpleFeatureCollection getFeatures(Query query) throws IOException { Request request = Dispatcher.REQUEST.get(); ... HttpServletRequest owsRequest = request.getHttpRequest(); Enumeration<String> headerNames = owsRequest.getHeaderNames(); // 步骤1:输出请求头内容 while (headerNames.hasMoreElements()) { String headerName = (String) headerNames.nextElement(); // 输出headerName及其值:owsRequest.getHeader(headerName) // 注意:请求头中可能包含"cookie" } // 步骤2:另一种获取Cookie的方式 if (owsRequest.getCookies() != null ) { for (Cookie cookie: owsRequest.getCookies()) { // 输出Cookie内容(cookie.getName()和cookie.getValue()) } } }
测试场景
首次请求使用curl命令发送:
curl '<URL>' \ -H 'authority: XXXXXX' \ -H 'accept: application/json, text/plain, */*' \ -H 'accept-language: en-US,en;q=0.9,fr;q=0.8' \ -H 'content-type: application/x-www-form-urlencoded' \ -H 'cookie: cookieName1=cookieValue1; cookieName2=cookieValue2; cookieName3=cookieValue3' \ -H 'sec-ch-ua: "Google Chrome";v="119", "Chromium";v="119", "Not?A_Brand";v="24"' \ -H 'sec-ch-ua-mobile: ?0' \ -H 'sec-ch-ua-platform: "Windows"' \ -H 'sec-fetch-dest: empty' \ -H 'sec-fetch-mode: cors' \ -H 'sec-fetch-site: same-origin' \ -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36' \ --data-raw $'service=WFS&request=GetFeature&srsname=EPSG:3857&outputFormat=application/json&efr=false&typeNames=xxxx&count=200&version=2.0.0&sortBy=yyy A&cql_filter=<someFilter>' \ --compressed
可在curl命令中添加自定义测试头:-H 'yourHeaderName: yourHeaderValue'
异常现象
- 发送第二个请求时修改自定义头的值,后续请求的头值始终停留在首次请求的内容,未更新。
owsRequest.getCookies()起初能返回正确Cookie(与owsRequest.getHeader('cookie')返回内容不同),但一段时间后返回null,无法获取任何Cookie信息。
内容的提问来源于stack exchange,提问作者jtour
相关产品推荐
相关产品推荐

