如何计算内容长度,例如:
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--
The Content-Length
值应通过汇总所有数据来计算after消息头的终止。就您的示例而言,这是这一点之后的所有内容(CRLF
为了便于阅读而包含的字符):
...
Content-Length: ?????\r\n
Content-Type: multipart/form-data; boundary=--------------------4d2179e6b3c0\r\n
\r\n
第一个空行之后的所有内容 (\r\n
) - 包括边界分隔符 - 应计入总长度。在实践中,这通常意味着您需要将Content-Length
生成完整消息实体主体后的标头值。获得完整的消息正文后,您可以在其前面添加标头以创建完整的 HTTP 消息。
根据 HTTP 规范,你在技术上并不required指定Content-Length
标头。从RFC 2616 14.13 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13:
应用程序应该使用此字段来指示消息主体的传输长度,除非第 4.4 节中的规则禁止这样做。
然而,对于大多数服务器来说,这是一个相当标准的要求,如果以下情况,它们通常会发回错误响应:Content-Length
缺失或指定不正确。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)