计算内容长度POST(Calculate content length POST)

2019-07-28 23:49发布

我如何计算内容长度例如:

POST /Upload/ HTTP/1.1
Host: test.lan
User-Agent: Shockwave Flash
Connection: Keep-Alive
Cache-Control: no-cache
Accept: text/*
Content-Length: ?????
Content-Type: multipart/form-data; boundary=----------------------------4d2179e6b3c0

------------------------------4d2179e6b3c0
Content-Disposition: form-data; name="Filename"

phpinfo.php
------------------------------4d2179e6b3c0
Content-Disposition: form-data; name="ASPSESSID"

6e223eb1c7561e9c599f03cc04e9444b
------------------------------4d2179e6b3c0
Content-Disposition: form-data; name="Filedata"; filename="phpinfo.php"
Content-Type: application/octet-stream

<? phpinfo(); ?>
------------------------------4d2179e6b3c0
Content-Disposition: form-data; name="Upload"

Submit Query
------------------------------4d2179e6b3c0--

Answer 1:

Content-Length值应该由消息头的终止合计所有数据来计算。 在您的例子中,这就是一切在这之后(含CRLF字符包括了可读性):

...
Content-Length: ?????\r\n
Content-Type: multipart/form-data; boundary=--------------------4d2179e6b3c0\r\n
\r\n

一切都在第一空行(后即将\r\n ) -包括你的边界分隔符-应在总长度计算。 在实践中,这通常意味着你需要对制表Content-Length生成完整的消息实体主体后标头值。 一旦你的消息的全身,你可以用你的标题前面加上它来创建完整的HTTP消息。

根据HTTP规范你是不是技术上需要到指定Content-Length头。 从2616 14.13 :

应用程序应使用此字段,以指示所述消息体的转印长度,除非这是由规则4.4节中禁止。

然而,这对于一般会发回错误响应,如果大多数服务器相当标准要求Content-Length丢失或错误地指定。



文章来源: Calculate content length POST
标签: http post