5

我知道我可以通过sleep()在输出中引入 a 来在 PHP 中生成分块响应。

但是是否也可以在 PHP 中生成Trailer HTTP 部分?如果没有,在 Apache 2.2 中是否有可能?

我需要它用于测试目的。

4

1 回答 1

2

如果发送了标头但未指定标头,PHP 将默认发送分块响应Content-Length。如果您熟悉 HTTP 规范,这是唯一合乎逻辑的事情,因为另一端的客户端需要知道您发送的 HTTP 消息何时结束,以便它可以停止读取。

如果要手动执行此操作,则需要...

  1. 自己发送适当的标题并调用flush()
  2. 手动输出分块的 HTTP 消息

因此,您可能会执行以下操作。这个想法是您需要手动发送自己的标头并手动分块您自己的消息。但是,如果您根本不发送Content-Length标头,PHP 将默认为您发送分块消息。

header("Transfer-encoding: chunked");
header("Trailer: X-My-Trailer-Header");
flush();

echo dechex(strlen($myChunk)) . "\r\n";
echo $myChunk;
echo "\r\n";
flush();

echo "0\r\n";
flush();

echo "X-My-Trailer-Header: some-value\r\n";
flush();
于 2012-08-15T06:54:02.340 回答