我在一些JUnit测试中使用了一个简单的嵌入式Jetty实例。
我想强制Jetty返回一个没有Content-Length标头的HTTP响应(正如我们在某些请求中看到的那样)。
我目前实施handle(...)
AbstractHandler
作为捕获请求的主要方式,然后,根据URL中的参数,Jetty会返回各种可能的响应,无论是好还是其他。
response.setHeader("Content-Length", null);
无法正常工作,但仍会根据我的正文数据返回有效内容长度。
答案 0 :(得分:2)
创建一个javax.servlet.Filter,其HttpServletResponse包含您的实施,阻止Content-Length
标头设置。
请务必在HttpServletResponseWrapper中实现以下方法。
每一个都可以是一段类似于...的简单代码。
@Override
public void addHeader(String name, String val)
{
if ( "Content-Length".equalsIgnoreCase(name) )
{
// Ignore content-length from servlets
return;
}
super.addHeader(name,val);
}
答案 1 :(得分:1)
如果你给响应写了一些字节或字符,然后刷新,然后写一些其他字节或字符到te响应,它将不得不使用分块传输类型,并且将无法设置内容长度,因为它被迫发送字节而不知道实际写入的长度。