计算内容长度POST
问题描述:
如何可以计算内容长度例如:计算内容长度POST
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--
答
的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
标头。从RFC 2616 14.13:
应用程序应该使用此字段来指示消息体的传输长度,除非这是4.4节规则所禁止的。
然而,这是其通常会发回一个错误响应,如果Content-Length
已丢失或错误地指定最服务器相当标准的要求。
是的,按照HTTP,它不是强制要求,但是一些CGI实现要求所有POST事务中的内容长度。 – ViFI 2016-10-18 23:56:58