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