Question

Je ne souhaite pas utiliser le package HTTP :: Proxy, car je souhaite supprimer quelques requêtes. Ma seule doublure ressemble à ceci, mais se casse en essayant de passer l'en-tête dans:

perl -MData::Dumper -MHTTP::Daemon -MHTTP::Status -MLWP::UserAgent -e 'my $ua = LWP::UserAgent->new;my $d=new HTTP::Daemon(LocalPort=>1999);print "Please contact me at: <", $d->url, ">\n";while (my $c = $d->accept) {while (my $r = $c->get_request) {if ($r->method eq 'GET' and $r->url->path eq "/uploader") {$c->send_response("whatever.");print Dumper($r);}else{$response=$ua->request($r->method,"http://localhost:1996".$r->uri,$r->headers,$r->content);$c->send_response($response);}}}'

formaté, c’est:

#perl -e '
use Data::Dumper;
use HTTP::Daemon;
use HTTP::Status;
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
my $d=new HTTP::Daemon(LocalPort=>1999);
print "Please contact me at: < ", $d->url, " >\n";
while (my $c = $d->accept) {
  while (my $r = $c->get_request) {
    if ($r->method eq 'GET' and $r->url->path eq "/uploaded") {
      $c->send_response("whatever.");
      print Dumper($r);
    } else { 
      $response = $ua -> request(
        $r->method, 
        "http://localhost:1996" . $r->uri, 
        $r->headers, 
        $r->content);
      $c->send_response($response);
    }
  }
}#'

Donc, je ne peux pas simplement transmettre la demande, car je dois changer d'hôte, et je ne peux pas simplement passer les en-têtes, semble-t-il ... >

Alors, est-ce que quelqu'un peut en faire un meilleur one-liner?

Était-ce utile?

La solution

Aw shoot, je l'ai corrigé avec ceci:

#perl -e '
use Data::Dumper;
use HTTP::Daemon;
use HTTP::Status;
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
my $d=new HTTP::Daemon(LocalPort=>1999);
print "Please contact me at: < ", $d->url, " >\n";
while (my $c = $d->accept) {
  while (my $r = $c->get_request) {
    if ($r->method eq "GET" and $r->url->path eq "/uploaded") {
      $c->send_response("whatever.");
      print Dumper($r);
    } else { 
      $response = $ua -> request( HTTP::Request->new(
        $r->method, 
        "http://localhost:1996" . $r->uri, 
        $r->headers, 
        $r->content));
      $c->send_response($response);
    }
  }
}#'

notez le HTTP :: Request- > new ouais ... alors ça marche, c'est un peu lent. mais ça va

Autres conseils

Pourquoi essayez-vous si fort d’écrire un one-liner? Y a-t-il une raison pour laquelle vous ne pouvez pas enregistrer le programme dans un fichier? Je suis juste curieux de savoir quelle est la situation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top