我正在尝试使用 PHP 中的套接字将分块的 POST 数据流式传输到本地服务器进行测试。如果我不分块请求实体主体并提供 Content-Length 标头,这可以正常工作。
但是,当我按如下方式对传输进行分块时,服务器无法识别消息的结尾。下面的原始消息有什么问题导致服务器无法正确识别消息已完成?
POST / HTTP/1.1
HOST: localhost
CONTENT-TYPE: text/plain
USER-AGENT: testing
ACCEPT-ENCODING: gzip,deflate,identity
TRANSFER-ENCODING: chunked
36
When in the chronicle of wasted time
0
在最后一个 '0' 之后有 2x CRLF
,所以最后 5 个字节是:0x30, 0x0D, 0x0A, 0x0D, 0x0A
.
我已经尝试将此请求发送到本地 Apache 服务器和 PHP5.4 的内置测试服务器。两者都无法确定请求已完成并且执行挂起,直到套接字超时。