基于HTTP请求方法和标头,HTTP服务器必须确定在HTTP请求标头的关闭CRLFCRLF之后是否期望消息主体,以及它何时期望一个消息主体,它是多少字节长
这个计算是如何进行的?通过请求方法和头文件的功能,我们可以计算请求消息体的长度。
跟进:
因此解析标头后的HTTP服务器可以简单地执行以下操作:
size_t RequestMessageBodyLength()
{
if (RequestHeaderExists("Content-Length"))
return RequestHeaderValue("Content-Length");
else
return 0;
}
上面没有涉及的角落案件吗?
(我不期望,HEAD请求的情况仅针对响应,而不是请求)
答案 0 :(得分:2)
有一个完整的标题,称为Content-Length
,指定为here,可能更好地解释here。
回答后续问题:
是的,服务器可以使用您在上面发布的伪代码,只要它不关心安全性。关于安全性的一般规则是:不要信任您未生成的输入。在这种情况下,攻击者可以使用标头Content-Length: 1000000
发送数千个请求,服务器将分配数千万字节的缓冲区并等待内容进入,拒绝为合法用户提供服务。生产HTTP服务器必须考虑到这种可能性,并使用超时和其他方法来确保不会发生此问题,或者攻击者难以创建。
答案 1 :(得分:0)
邮件发件人计算的邮件正文的长度。消息组合时,长度值放在HTTP标头Content-Length中。