使用perl CGI处理外部页面或充当反向代理

时间:2013-07-29 16:47:35

标签: perl apache proxy cgi

有一个页面驻留在运行Apache的本地服务器上。我想通过带有单个名称/值对的GET请求提交表单,例如:

id=item1234

这个GET请求必须由另一个我无法控制的服务器处理,随后返回一个我想用CGI脚本转换的页面。换句话说:

  • 用户提交表单
  • 我的apache代理外部资源
  • EXTERNAL资源会抛出一个页面
  • 我的apache用CGI转换它(可能是另一种方式?)
  • 用户获得修改后的页面

再次这更像是一个建筑问题,所以我会感激任何提示,甚至将我的鼻子插入一些指南将有所帮助,因为我无法很好地构建我的谷歌请求以找到任何相关的东西。

感谢。

2 个答案:

答案 0 :(得分:2)

将ID“17929632”传递给此CGI代码(“proxy.pl?id=17929632”),您应该在浏览器中使用此页面。

#!/usr/bin/perl

use strict;
use warnings;

use LWP::UserAgent;
use CGI::Pretty qw(:standard -any -no_xhtml -oldstyle_urls);
print header;
print "<html>\n";
print "  <head><title>Proxy Demo</title></head>\n";
print "  <body bgcolor=\"white\">\n";

my $id = param('id') || die "No CGI param 'id'\n";

my $ua = LWP::UserAgent->new;
$ua->agent("MyApp/0.1 ");

# Create a request
my $req = HTTP::Request->new(GET => "http://stackoverflow.com/questions/$id");

# Pass request to the user agent and get a response back
my $response = $ua->request($req);

# Check the outcome of the response
if ($response->is_success) {
  my $content = $response->content;
  # Modify the original content here!
  print $content;
}
else {
  print $response->status_line;
}

print "</body></html>\n";

答案 1 :(得分:0)

模糊的问题,模糊的答案:编写您的CGI程序以包含HTTP用户代理,例如LWP