[英]PHP cURL proxy WITH header?
我正在制作一個PHP圖像代理腳本。 我不僅需要回顯它請求的圖像的內容,還需要同樣地重現圖像請求的標頭。
我見過一個,另一個,但不是兩個都在一起……而這些cURL選項使我感到困惑。 我該怎么做?
抱歉,我不確定您想要什么。
這是從圖像URL,回顯頭獲取圖像並將圖像保存到文件的示例。
但是,如果您想要代理,則應使用Web服務器(Nginx,Apache等),不需要PHP
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://img3.cache.netease.com/www/logo/logo_png.png");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_REFERER, "http://www.163.com/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
$return = curl_exec($ch);
curl_close($ch);
list($header, $image) = explode("\r\n\r\n", $return, 2);
echo $header;
file_put_contents("/tmp/logo.png", $image);
您可以使用getallheaders()
獲取所有標題(不是原始文本getallheaders()
然后將它們重新串在一起:
$headers = "";
foreach (getallheaders() as $name => $value) {
$headers = "$name: $value\r\n";
}
$headers .= "\r\n"; // Double newline to signal end of headers (HTTP spec)
然后我認為最好的方法是使用套接字連接,而不是像這樣的CURL:
$response = '';
$fp = fsockopen('example.org', 80);
fputs($fp, $headers);
while (!feof($fp)) {
$response .= fgets($fp, 128);
}
fclose($fp);
請注意,您可能需要修改主機/請求標頭(因為這是您要求的相同副本),並且您可能需要實現重定向。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.