有没有办法在Java中“清理”接受标头?

时间:2012-09-28 18:47:31

标签: java http servlets jersey

因此,如果有人发送此接受标头:

*/*'"!@$^*\/:;.,?{}[]`~-_<sCrIpT>alert(81363)</sCrIpT>

使用Jersey在响应中返回。我需要拦截它并逃脱它。我还没有找到任何办法。有什么帮助吗?

2 个答案:

答案 0 :(得分:1)

您可以使用过滤器拦截您的请求,并在到达您的服务类之前进行清理。请检查此example

答案 1 :(得分:0)

您可以读取请求标头,并以这种方式修改响应标头(您无法修改请求标头,它是只读地图):

@Context HttpHeaders headers;

@Path("yourPath")
public Response yourMethod(){
    List<String> accept = headers.getRequestHeader(HttpHeaders.ACCEPT);
    if ( accept contains invalid characters)) {
        do something    
    }
    //If you set a null value, the header is deleted. 
    //Anyway, deletion is useless, if you have not yet set 
    // the Accept header on the response.
    return  Response.ok().header(HttpHeaders.ACCEPT, null).build();
}