Es un proxy inverso, inicialmente pensado para bypassear la protección CORS del navegador y facilitar así en algunos casos el desarrollo de aplicaciones JavaScript.
Otro uso muy interesante es proteger
<?php
$protocol = 'http';
$host = 'es.wikipedia.org';
$request = $_SERVER['REQUEST_URI'];
$url = $protocol.'://'.$host.$request;
if (!file_exists('cache/'.md5($url))) {
$postdata = http_build_query($_POST);
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
);
$opts = array('http' =>
array(
'method' => 'GET',
'header' => 'Content-type: application/x-www-form-urlencoded'."\r\n"
.'User-Agent: Mozilla/5.0 (Ubuntu; X11; Linux x86_64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1',
'content' => $postdata
)
);
$context = stream_context_create($opts);
$data = file_get_contents($url, false, $context);
if ($_SERVER['REQUEST_URI'] == '/robots.txt')
$data = '';
unset($http_response_header[8]);
$headers = true;
$headers = var_export($http_response_header, true);
$string = "<?php
\$headers = ".$headers.";
foreach (\$headers as \$h)
header(str_replace('es.wikipedia.org',\$_SERVER['SERVER_NAME'],\$h));
?>
".str_replace('<meta name="robots" content="noindex,nofollow" />','',$data);
file_put_contents('cache/'.md5($url),$string);
// Cabeceras que me envía el navegador
$http = array();
foreach ($_SERVER as $S=>$s) {
if (strpos($S,'HTTP_') === 0) {
$http[$S] = $s;
}
}
}
include('cache/'.md5($url));
?>