如何在Servlet中检查标头后删除请求的主体

我想在继续正文之前检查请求的标题是否包含某个标题。 例如,我想检查多部分/表单数据是否在标题中包含"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。