使用Tomcat或Spring检查请求中是否正确设置了content-length标头

时间:2016-05-18 14:39:59

标签: spring-mvc tomcat servlets content-length

在更广泛的上下文中,我们希望通过http post请求限制客户端可以发送到服务器的消息的大小。

我想通过使用http header content-length来做到这一点。 因此,我不必阅读完整的正文,只需检查此标题,并拒绝请求,如果内容长度太大,如果内容长度丢失也会拒绝(http 411错误代码)

所以我想确保邮件正文的实际大小与请求的内容长度中设置的相同。

问题是,如果内容长度实际上代表邮件正文的实际大小,Tomcat或Spring MVC(我的堆栈)是否会进行验证?

(使用过滤器实现它应该很容易,只是想知道servlet容器或Spring调度程序servlet是不是这样开箱即用。)

1 个答案:

答案 0 :(得分:2)

Tomcat处理它。

在一个包含案例的简单网络应用程序上进行了一些测试后:

  1. 如果content-lenght不存在,它将从内容中读取0个字节。
  2. 如果我们的内容比content-lenght标题中提供的内容长,并且keep-alive为true,那么在读取大小内容长度的主体后,它将尝试将剩余的主体作为新请求进行处理(并且会失败)请求不好)
  3. 在与第2点相同的情况下,只是保持活动是假的,我们仍然会像内容长度标题一样接收长度。