我有一个浏览器客户端,它从我的网络服务中获取部分内容,例如使用Range: bytes=100000-200000
. 请求进入 PHP 页面 fetch.php。在那个 PHP 页面中,我使用-获取请求的 Range,$_SERVER['HTTP_RANGE']
然后将其设置为 curl 请求。我遇到的问题是,远程服务器以状态和标头响应,但我的 PHP 页面仅以 a和 no响应,因此结果是客户端认为完整的部分文件。问题是,如何在 PHP 中将结果设置为原始请求?curl_setopt
CURLOPT_RANGE
206 Partial Content
Content-Range
200 OK
Content-Range
Content-Range
如果我事先知道范围,但我不知道,我可以只使用header
命令并完成它,但范围会在响应中返回。我可以在 curl 中设置以接收包含内容的所有标头,然后解析标头,使用header
设置并将响应设置为 206,然后回显所有数据......但数据是二进制的,更不用说非常大了,所以这似乎是次优的,充其量。
我想知道我是否可以以某种方式在 PHP 中设置一个选项以不发送它自己的任何标头,并且基本上只是将整个响应回显给请求者。如果没有充分考虑这一点,其他标头(缓存、连接、代理等)可能会出现问题。
也许有一种方法可以让我只接收来自 curl 的标头(某种 partial_execute?),得到我需要的东西,设置标头和响应代码,然后基本上完成 exec 并直接获得实际响应的输出?我无法从 curl 中看到如何做到这一点。
设置一个实际的反向代理也不是一个真正的选项,因为 PHP 脚本实际上确定了资源的目标服务器(它不是静态的)。
我想我可以跳过使用 curl 并直接进行 TCP/TLS 连接并管理 HTTP 请求/响应。
还有其他想法或可能性吗?谢谢!