【问题标题】:PHP + Curl, get remote file and serve with same headersPHP + Curl,获取远程文件并使用相同的标头提供服务
【发布时间】:2010-08-18 16:11:37
【问题描述】:
我需要一个通过 get 请求接受 URL 的 php 脚本,我希望它发送 URL 请求,发送访问者使用的相同标头,然后使用服务器发送的相同标头返回文件。
例如。请求是http://Google.com/
PHP 脚本使用 Curl 请求 http://Google.com/ 发送与发送给脚本的用户浏览器相同的标头(例如浏览器名称)
然后将数据发送到用户的浏览器,并使用 Google 发送到脚本的相同标头(例如缓存、ttl 等)。
【问题讨论】:
标签:
php
curl
http-headers
【解决方案1】:
好吧,您需要设置 curlopt CURLOPT_HEADER 设置以及 CURLOPT_RETURNTRANSFER 设置。但这将返回一个带有标题在正文顶部的字符串。然后,您可以将它们拆分为:
$response = curl_exec($ch);
list ($headerString, $body) = explode("\r\n\r\n", $response, 2);
$headers = explode("\r\n", $headerString);
foreach ($headers as $header) {
header($header);
}
echo $body;
现在,请注意,并非所有标头都应被转发(例如 Server: 标头)...我将留给您构建一个健全性检查功能以去除未转发的标头...