Java 如何在检查Servlet中的头之后删除请求体

Java 如何在检查Servlet中的头之后删除请求体,java,servlets,Java,Servlets,在继续正文之前,我想检查请求的头是否包含某个头。例如,我想检查多部分/表单数据是否在标题中包含“Authorization”。如果不是,则不需要继续上载多部分正文,因为对于文件上载来说,多部分正文通常非常大 servlet允许您这样做吗?我曾尝试在谷歌上随机搜索,但没有运气。下面是我在servlet中尝试的代码,但在调用此doPost方法之前,它仍然继续接收主体。在调用servlet之前,流似乎已被完全接收 @Override protected void doPost(HttpServletR

在继续正文之前,我想检查请求的头是否包含某个头。例如,我想检查多部分/表单数据是否在标题中包含
“Authorization”
。如果不是,则不需要继续上载多部分正文,因为对于文件上载来说,多部分正文通常非常大

servlet允许您这样做吗?我曾尝试在谷歌上随机搜索,但没有运气。下面是我在servlet中尝试的代码,但在调用此
doPost
方法之前,它仍然继续接收主体。在调用servlet之前,流似乎已被完全接收

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    PrintWriter out = response.getWriter();
    response.setContentType("text/plain");
    if (request.getHeader("Authorization") == null) {
        response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
        out.println("Status: " + HttpServletResponse.SC_UNAUTHORIZED + " - UNAUTHORIZED");
        return;
    }
    // ... the rests
}

这就是HTTP的局限性。当请求尚未完全读取到结尾时,您无法发送响应。

RFC 2616说明:

发送消息体的HTTP/1.1(或更高版本)客户端在传输请求时应监视网络连接的错误状态。如果客户端看到错误状态,它应该立即停止传输正文


所以我不同意,这不是HTTP限制,而是servlet限制。

我记得和一位朋友谈过,有一些程序可以通过检查头部来阻止攻击,并确定是否应该在完全接收正文之前断开连接。我只是想知道,如果这是HTTP的限制,那么这意味着通过发送大带宽攻击网站是可能的,对吗?Servlet API不提供任何中断HTTP连接的工具。你知道客户端是否真的支持这一点吗?