珀尔 | CGI 中的 GET 与 POST
在 Perl 中,通用网关接口 (CGI) 只不过是一种协议,它定义了 Web 服务器与一些可执行程序的交互,以生成动态网页。基本上,它显示了 Web 服务器如何向程序发送信息,程序如何将信息发送回 Web 服务器,而 Web 服务器又可以发送回浏览器。
GET
和POST
不可互换,并且两种类型都不同。代理服务器可以缓存GET
请求的输出。 GET
方法是所有 Web 请求将信息从浏览器传递到 Web 服务器的默认方法,它还会创建一个长字符串,显示在浏览器的 URL 框中。它发送附加到页面请求的加密用户信息。页面和加密信息之间用?分隔。字符:
例子:
http://servername.com/cgi-bin/script_name.cgi or.pl?key1=value1&key2=value2…….
此信息通过QUERY_STRING
标头传递,并且通过使用QUERY_STRING
环境变量,它可以在您的 CGI 程序中轻松访问。由于GET
方法有大小限制,因此请求字符串中只能有 1024 个字符。可以通过简单地将键值对与任何 URL 连接起来来传递信息。
NOTE: If you are dealing with passwords or any other sensitive information in order to pass it to the server, then using the GET
method is not a good choice.
例子:
Search Your Query:
输出:
上述 GET 方法形式的 Perl-CGI 脚本:
#!"c:\xampp\perl\bin\perl.exe"
$buffer = $ENV{'QUERY_STRING'};
#split information into key/value pairs
@pairs = split(/&/, $buffer);
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9] [a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/~!/ ~!/g;
$FORM{$name} = $value;
}
$SearchTerm = $FORM{'q'};
$Location = $FORM{'l'};
print "Content-type:text/html\r\n\r\n";
print "";
print "";
print "GeeksForGeeks - Get Method ";
print "";
print "";
print "Hello You searched '$Location' for '$SearchTerm'
Few Matches Found!
Match 1
Match 2
Match 3
Match 4
etc.....
";
print "";
print "";
1;
输出:
如上所示,在输出图像中,信息与 URL 一起传递:
http://localhost/xampp/cgi-bin/Gfg_get.pl?q=music&l=Web
相比之下, POST
方法是将信息传递给 CGI 程序的最可靠方法。一般在需要将信息上传到服务器时使用POST
方式。针对上传数据量较大的情况,认为POST
方法比GET
方法更适合它,因为 URL 框中没有数据出现。与GET
方法类似,信息也包含在其中,但不是在?之后将其作为文本字符串发送。在 URL 框中,它通过您的 Perl/CGI 程序可以访问的不同路由将其作为单独的消息发送到服务器。
例子:
Please Fill in the Information: