如何修复直接写入 HTTP header 输出的 Findbugs HTTP 参数

How to fix Findbugs HTTP parameter directly written to HTTP header output

我有一个 class RequestFilter 和 @Override 方法 doFilterInternal。当我为响应添加 Header 时,findbugs 显示直接写入 HTTP header 输出的错误 HTTP 参数。那么我该如何解决这个问题呢?谢谢大家

String rqHd = request.getHeader("Access-Control-Request-Headers");    
response.addHeader("Access-Control-Allow-Headers", rqHd); // findbugs error here

我认为这是 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);
}

如果您不想设置 ETag,请注意 header。 ETag 看起来像 W/"myetagvalue"

String etagHd = request.getHeader(HttpHeaders.ETAG);    
response.addHeader(HttpHeaders.ETAG,  URLEncoder.encode(etagHd,StandardCharsets.UTF_8.displayName()); 

将被编码W%2F%22myetagvalue%22 小心!