2013-07-29 49 views
1

存在運行Apache的本地服務器上的頁面。我想通過一個GET請求來提交表單與單個名稱/值對,如:使用perl CGI處理外部頁面或充當反向代理

id=item1234 

這GET請求必須由我不擁有控制權隨後回到頁面另一臺服務器進行處理我想用CGI腳本進行轉換。換句話說:

  • 用戶提交表單
  • 我的Apache代理到外部資源
  • 外部資源拋出返回頁面
  • 我的Apache轉變其與CGI
  • (也許另一種方式?)用戶獲得修改後的頁面

再次,這更像是一個建築問題,所以我會很感激任何提示,甚至把我的鼻子插入一些g由於我無法很好地構建我的谷歌請求以找到任何相關的東西,因此智能設備將有所幫助。

謝謝。

+0

其實你沒問過問題?你到底在做什麼? – simbabque

回答

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"; 
+0

完美! *完全*我在找什麼。非常感謝你。 –

0

模糊的問題,模糊的答案:編寫您的CGI程序以包含HTTP用戶代理,例如, LWP