如何修复 Findbugs HTTP 参数直接写入 HTTP 标头输出
Posted
技术标签:
【中文标题】如何修复 Findbugs HTTP 参数直接写入 HTTP 标头输出【英文标题】:How to fix Findbugs HTTP parameter directly written to HTTP header output 【发布时间】:2015-10-10 22:08:29 【问题描述】:我有一个类 RequestFilter 和 @Override 方法 doFilterInternal。当我为响应添加标头时,findbugs 显示错误 HTTP 参数直接写入 HTTP 标头输出。那么我该如何解决这个问题呢?谢谢大家。
String rqHd = request.getHeader("Access-Control-Request-Headers");
response.addHeader("Access-Control-Allow-Headers", rqHd); // findbugs error here
【问题讨论】:
错误是什么? 【参考方案1】:我认为这是 HRS_REQUEST_PARAMETER_TO_HTTP_HEADER 错误,您可以这样修复它:
String rqHd = request.getHeader("Access-Control-Request-Headers");
if(rqHd != null)
String rqHeader = URLEncoder.encode(rqHd,StandardCharsets.UTF_8.displayName());
response.addHeader("Access-Control-Allow-Headers", rqHeader);
【讨论】:
【参考方案2】:如果您不想设置 ETag 标头,请注意。 ETag 看起来像 W/"myetagvalue"
String etagHd = request.getHeader(HttpHeaders.ETAG);
response.addHeader(HttpHeaders.ETAG, URLEncoder.encode(etagHd,StandardCharsets.UTF_8.displayName());
将被编码为W%2F%22myetagvalue%22
小心!
【讨论】:
以上是关于如何修复 Findbugs HTTP 参数直接写入 HTTP 标头输出的主要内容,如果未能解决你的问题,请参考以下文章