首页 > 解决方案 > Tomcat9 / Java11 升级:截断 POST 正文?

问题描述

我最近将 Debian 服务器从 Java 8 / Tomcat 8 更新到 Java 11 / Tomcat 9。我有另一台服务器在 11/9 下运行良好,而我刚刚更新的服务器在 8/8 下运行良好。

但是更新后的服务器似乎一直在截断 POST 请求的主体,如在测试 servlet 中所见。为什么会这样?

测试小服务程序:

public void doPost(HttpServletRequest httpRequest, HttpServletResponse httpResponse) {
    System.out.println("got POST");
    try{
            BufferedReader reader = httpRequest.getReader();
        String line = null;
        int len = 0;
        while((line = reader.readLine()) != null) {
            System.out.println(line);
            len += line.length();
        }
        System.out.println("total post body size: " + len);
        PrintWriter out = httpResponse.getWriter();
        out.print("Hello Post World ");
        out.close();
    }catch(Exception e) {
        System.out.println("error " + e + " " + e.getMessage());
    }
}

邮递员控制台显示“内容长度:101200”。使用较短的内容(100 字节),它可以正常工作。servlet 不会引发任何错误 - 上面的日志“[2020-07-29 15:59:56] [info] total post body size: 16067”并且客户端得到了正确的响应。这与 Java 11 和/或 Tomcat 9 中的分块和更改有关吗?

标签: tomcatservlets

解决方案


推荐阅读