Content-Length 标头不存在

use*_*523 6 php http nginx http-headers

我在 Linux 上安装了 nginx 服务器。当我使用 curl 发送请求时,Content-Length响应中缺少标头。

1.php 文件是:

<?php
   echo "hello";
?>
Run Code Online (Sandbox Code Playgroud)

示例请求是:

curl api.mysite.com/taxi/1.php -i

HTTP/1.1 200 OK
Server: nginx/1.2.1
Date: Wed, 17 Sep 2014 06:16:00 GMT
Content-Type: text/html; charset=utf8
Vary: Accept-Encoding
X-Powered-By: PHP/5.4.4-14+deb7u14
Age: 0
X-Cache: MISS from cache.turonnet.uz
Transfer-Encoding: chunked
Connection: keep-alive
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

Sve*_*ven 19

content-length如果Transfer-Encoding设置为 ,则无法设置chunked。在发送标头时,服务器不知道它最终会发送多少数据。每个块都有自己的长度标头字段(请参阅RFC)。

仔细想想,与静态 HTML 文件不同,Web 服务器无法知道 PHP 脚本将生成多少数据。它可以缓存生成的文件并在脚本完成后发送它,或者在生成时将其分块发送出去。后者尤其适用于输出大且运行时间长的脚本。