HTTP请求消息正文存在和长度

时间:2012-02-04 22:30:12

标签: http

基于HTTP请求方法和标头,HTTP服务器必须确定在HTTP请求标头的关闭CRLFCRLF之后是否期望消息主体,以及它何时期望一个消息主体,它是多少字节长

这个计算是如何进行的?通过请求方法和头文件的功能,我们可以计算请求消息体的长度。

跟进

因此解析标头后的HTTP服务器可以简单地执行以下操作:

size_t RequestMessageBodyLength()
{
    if (RequestHeaderExists("Content-Length"))
        return RequestHeaderValue("Content-Length");
    else
        return 0;
}

上面没有涉及的角落案件吗?

(我不期望,HEAD请求的情况仅针对响应,而不是请求)

2 个答案:

答案 0 :(得分:2)

有一个完整的标题,称为Content-Length,指定为here,可能更好地解释here

回答后续问题:

是的,服务器可以使用您在上面发布的伪代码,只要它不关心安全性。关于安全性的一般规则是:不要信任您未生成的输入。在这种情况下,攻击者可以使用标头Content-Length: 1000000发送数千个请求,服务器将分配数千万字节的缓冲区并等待内容进入,拒绝为合法用户提供服务。生产HTTP服务器必须考虑到这种可能性,并使用超时和其他方法来确保不会发生此问题,或者攻击者难以创建。

答案 1 :(得分:0)

邮件发件人计算的邮件正文的长度。消息组合时,长度值放在HTTP标头Content-Length中。

相关问题