簡體   English   中英

PHP cURL代理WITH標頭?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM