有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我可以强制jetty*不*包含用于单元测试的ContentLength头吗?

我在一些JUnit测试中使用了一个简单的嵌入式Jetty实例

我想强制Jetty返回一个没有内容长度头的HTTP响应(正如我们在野外看到的某些请求)

我目前实现了handle(...)of AbstractHandler作为捕获请求的主要方式,然后,基于URL中的参数,Jetty返回各种可能的响应,无论是好的还是其他的

response.setHeader("Content-Length", null);不起作用,它仍然返回基于我的正文数据的有效内容长度


共 (2) 个答案

  1. # 1 楼答案

    创建一个javax.servlet.Filter来用防止设置Content-Length头的实现包装HttpServletResponse

    请确保在HttpServletResponseWrapper中实现以下方法

    每一个都可以是一段简单的代码,类似于

    @Override
    public void addHeader(String name, String val)
    {
        if ( "Content-Length".equalsIgnoreCase(name) ) 
        {
            // Ignore content-length from servlets
            return;
        }
        super.addHeader(name,val);
    }
    
  2. # 2 楼答案

    如果您向响应写入一些字节或字符,然后刷新,然后向te响应写入一些其他字节或字符,它将不得不使用分块传输类型,并且无法设置内容长度,因为它被迫发送字节,而不知道实际写入的长度