首页 > 解决方案 > Apache 和 Content-Range

问题描述

我正在尝试在 PHP 生成的文件中实现对 Content-Range 的支持。当浏览器发送 Range 请求时,我的脚本会给出正确的字节并且运行良好。但是在测试从 Apache 服务器下载 PDF 时 Content-Range 的外观时,我意识到从 Web 浏览器到我的服务器的第一个请求不包含 Range 标头,但不知何故,服务器仍然没有返回完整的文件,只有 32 kB。

在此屏幕截图中,您可以看到 Firefox 向 Apache 发送了 5 个请求 my_pdf.pdf,而 Apache 每次响应 32-192 kB。整个 PDF 为 28 MB。请求 2-5 确实包含范围请求。但第一个请求 - 突出显示没有。您可以在右侧看到 Content-Length 为 28 MB,但 Apache 仅返回 32 kB。

所以我的问题是——Apache 怎么知道只返回 32 kB 而不是整个 28 MB PDF 文件?

在此处输入图像描述

标签: phpapachehttphttp-headers

解决方案


所以我的问题是——Apache 怎么知道只返回 32 kB 而不是整个 28 MB PDF 文件?

它没有。如果您查看响应中的 Content-Length 标头,它会显示 2930 万字节的完整文件大小。

客户端可能在未读取整个响应的情况下关闭了连接。


推荐阅读