Je ne veux pas utiliser le paquet HTTP :: Proxy parce que je veux supprimer quelques requêtes. Mon un paquebot ressemble à ceci, mais se brise en essayant de passer l'en-tête:Comment puis-je écrire un simple proxy HTTP en Perl?
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);
}
}
}#'
passe donc je ne peux pas juste à la demande, parce que je dois changer l'hôte, et je ne peux pas simplement passer dans les en-têtes, il semble ... alors que dois-je faire pour le garder court.
Alors, est-ce que quelqu'un peut faire un meilleur one-liner?
Vous ne voulez probablement pas utiliser de guillemets simples autour de GET. Cela fonctionne dans ce cas, mais pas pour les raisons que vous pensez que cela fonctionne (essayez d'activer le mode strict pour voir ce que je veux dire). –
Je suis perdu sur pourquoi ne pas utiliser des guillemets simples. Les guillemets simples signifient simplement "aucune interpolation de variable". En fait, je recommanderais de changer les autres chaînes en guillemets simples juste pour être cohérent. –
Parce qu'il les utilise également sur la ligne de commande. En raison de la chance, cela fonctionne dans ce cas, mais dans d'autres cas, ce ne sera pas le cas. –