Creo en nosotros. Wikipedia.
TreeWeb::Artículos::PHP::Proxy inverso
Permalink: http://www.treeweb.es/u/1283/ 01/02/2015

Proxy inverso

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 
    0 
    1 <?php
    2 
    3 $protocol 
'http';
    4 
$host 'es.wikipedia.org';
    5 
$request $_SERVER['REQUEST_URI'];
    6 
$url $protocol.'://'.$host.$request;
    7 
    8 if (!
file_exists('cache/'.md5($url))) {
    9     
$postdata http_build_query($_POST);
   10     
$opts = array('http' =>
   11         array(
   12             
'method'  => 'POST',
   13             
'header'  => 'Content-type: application/x-www-form-urlencoded',
   14             
'content' => $postdata
   15         
)
   16     );
   17     
$opts = array('http' =>
   18         array(
   19             
'method'  => 'GET',
   20             
'header'  =>     'Content-type: application/x-www-form-urlencoded'."\r\n"
   21                             
.'User-Agent: Mozilla/5.0 (Ubuntu; X11; Linux x86_64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1',
   22             
'content' => $postdata
   23         
)
   24     );
   25 
   26     
$context  stream_context_create($opts);
   27 
   28     
$data file_get_contents($urlfalse$context);
   29     if (
$_SERVER['REQUEST_URI'] == '/robots.txt')
   30         
$data '';
   31 
   32 
   33     unset(
$http_response_header[8]);
   34 
   35     
$headers true;
   36     
$headers var_export($http_response_headertrue);
   37     
   38     
$string "<?php
   39     
   40 \$headers = "
.$headers.";
   41 
   42 foreach (\$headers as \$h)
   43     header(str_replace('es.wikipedia.org',\$_SERVER['SERVER_NAME'],\$h));
   44 
   45 ?>
   46 "
.str_replace('<meta name="robots" content="noindex,nofollow" />','',$data);
   47 
   48     
file_put_contents('cache/'.md5($url),$string);
   49 
   50     
// Cabeceras que me envía el navegador
   51     
$http = array();
   52     foreach (
$_SERVER as $S=>$s) {
   53         if (
strpos($S,'HTTP_') === 0) {
   54             
$http[$S] = $s;
   55         }
   56     }
   57 }
   58 
   59 include(
'cache/'.md5($url));
   60 
   61 
?>
   62 

   63 

   64 
Powered by TreeWeb
© TreeWeb 2010. Todos los derechos reservados