我想在继续使用正文之前检查请求的标头是否包含某个标头。例如,我想检查多部分/表单数据是否在标题中包含"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
}
答案 0 :(得分:3)
这是HTTP的限制。如果未完全读取请求,则无法发送响应。
答案 1 :(得分:1)
RFC 2616说:
发送消息体的HTTP / 1.1(或更高版本)客户端应该在传输请求时监视网络连接的错误状态。如果客户端看到错误状态,它应该立即停止传输正文。
所以我不同意,这不是HTTP限制,而是servlet。