【发布时间】:2016-09-09 16:11:12
【问题描述】:
我使用的是 Apache 2.2 和 PHP 7.0.1。我强制使用 flush() 进行分块编码,如下例所示:
<?php
header('HTTP/1.1 200 OK');
echo "hello";
flush();
echo "world";
die;
我在响应的开头和结尾得到了不需要的字符:
HTTP/1.1 200 OK
Date: Fri, 09 Sep 2016 15:58:20 GMT
Server: Apache/2.2.15 (CentOS)
X-Powered-By: PHP/7.0.9
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
a
helloworld
0
第一个是十六进制的块大小(10 = A)。我使用Klein 作为PHP 路由器,我发现只有在重写HTTP 状态标头时才会出现问题。我想我的 Apache 配置有问题,但我无法弄清楚。
已编辑:我的问题与 Apache 无关,而是与 Nginx 和 chunked_transfer_encoding 指令有关。检查下面的答案。
【问题讨论】:
-
您看到的不需要的字符到底是什么?
-
@JasonHoetger “a”(十六进制为 10,因为有 10 个字符)和尾随的“0”。它们包含在正文中,因此它破坏了我的 HTML。