PHP cURL proxy С заголовком?

Я создаю скрипт прокси-сервера PHP. Мне нужно, чтобы он не только отражал содержимое изображения, которое он запрашивал, но и идентично воспроизводил заголовок запроса изображения.

Я видел один, а другой, но не оба вместе … и эти опции cURL меня путают. Как мне это сделать?

Solutions Collecting From Web of "PHP cURL proxy С заголовком?"

Извините, я не уверен, что вы хотите.

Это пример, чтобы получить от url изображения, заголовок эха и сохранить изображение в файл.

Но если вы хотите прокси-сервер, вы должны использовать веб-сервер (Nginx, Apache и т. Д.), PHP не нужен

<?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://img.ruphp.com/header/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()

Затем соедините их вместе:

 $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); 

Обратите внимание, что вам может потребоваться изменить заголовки хоста / запроса (потому что это идентичная копия, как вы просили), и вам может потребоваться реализовать следующую функцию перенаправления.