××× ×§×××¥ CGI?
×§×××¥ CGI ××××¢ ×סקר××¤× Common Gateway Interface ××ש×ש שרת ××× ××¨× × ××פע×ת ת××× ×ת ××צ×× ×ת ××¢×××× ×קש×ת ×שת×ש××. ×סקר××¤× ×©× ×©×ר ××§×××¥ ×¢× ×¡×××ת .cgi × ××ª× ×××¨× ××× ×שפ×ת ת×× ×ת C ×× Perl. ×× ×××¦× ×¢×× ×××××× ×ר×ש×× ×× ×©× ×××× ××¨× ×, ××שר ×פת×× ××× ××¨× × ×¨×¦× ×××ר ×ס×× × ×ª×× ×× ××©×¨×ª× ×××× ××¨× × ×©×××. שרת שת×× ×שער ×ש×תף ××× ×©×¨×ª ××× ××¨× × ××ס×× × ×ª×× ×× ××× ×ת××× ×××צ××¢ ×§×× CGI.
פ×ר×× ×§×××¥ CGI
סקר×פ××× ×©× CGI ×ש×ש×× ×ת שרת ×××× ××¨× × ××× ×××§× ×¢× ×××¢××× ×××××ר ×ת ×××¤× ×××פ×× ××ת××ת URL. ××××× × ×¢×©× ×××¨× ××× ×¢× ××× ×¡×××× ×¡×¤×¨××× ×××©× (×× × ×צ××× ××ס×××× ××¢×קר) ×××××× ×¡×§×¨×פ××× ×©× CGI; ש×× ×× ×¤××¥ ××× cgi-bin. ××××××, /usr/local/apache/htdocs/cgi-bin ×××× ×××××ר ×ספר××ת CGI ×שרת ×××× ××¨× ×. ××שר ×פ××¤× ××× ××¨× × ××קש ×ת××ת URL ש××¤× × ××§×××¥ ×ת×× ×¡×¤×¨××ת CGI, ××, ×××§×× ×¤×©×× ×ש××× ×ת ××§×××¥ ××× (/he/usr/local/apache/htdocs/cgi-bin/printenv.pl) ××פ××¤× ×××× ××¨× ×, ×-HTTP שרת ××צע ×ת ×סקר××¤× ×©×¦××× ×××××ר ×ת ×פ×× ×©× ×סקר××¤× ××פ××¤× ×××× ××¨× ×. ××§×צ×ר, ×× ×× ×©×¡×§×¨××¤× ×-CGI × ×©×× ×פ×× ×¡×× ×ר×× ×××¢×ר ×××§×× ×××× ××¨× × ×××§×× ××××ת ×××¦× ××ס××£ ×©× ××××.
××××× ×-CGI
××¢×§××ת סקר××¤× CGI ×©× ××ª× ×-Perl ××צ×× ×ת ×× ××©×ª× × ×ס×××× ××××¢×ר×× ×¢× ××× ×©×¨×ª ×××× ××¨× ×:
#!/usr/bin/env perl
=head1 DESCRIPTION
printenv â a CGI program that just prints its environment
=cut
print "Content-Type: text/plain\n\n";
for my $var ( sort keys %ENV ) {
printf "%s=\"%s\"\n", $var, $ENV{$var};
}
×פ×× ×××× ××× ×××:
COMSPEC="C:\Windows\system32\cmd.exe"
DOCUMENT_ROOT="C:/Program Files (x86)/Apache Software Foundation/Apache2.4/htdocs"
GATEWAY_INTERFACE="CGI/1.1"
HOME="/home/SYSTEM"
HTTP_ACCEPT="text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
HTTP_ACCEPT_CHARSET="ISO-8859-1,utf-8;q=0.7,*;q=0.7"
HTTP_ACCEPT_ENCODING="gzip, deflate, br"
HTTP_ACCEPT_LANGUAGE="en-us,en;q=0.5"
HTTP_CONNECTION="keep-alive"
HTTP_HOST="example.com"
HTTP_USER_AGENT="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:67.0) Gecko/20100101 Firefox/67.0"
PATH="/home/SYSTEM/bin:/bin:/cygdrive/c/progra~2/php:/cygdrive/c/windows/system32:..."
PATHEXT=".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC"
PATH_INFO="/foo/bar"
PATH_TRANSLATED="C:\Program Files (x86)\Apache Software Foundation\Apache2.4\htdocs\foo\bar"
QUERY_STRING="var1=value1&var2=with%20percent%20encoding"
REMOTE_ADDR="127.0.0.1"
REMOTE_PORT="63555"
REQUEST_METHOD="GET"
REQUEST_URI="/cgi-bin/printenv.pl/foo/bar?var1=value1&var2=with%20percent%20encoding"
SCRIPT_FILENAME="C:/Program Files (x86)/Apache Software Foundation/Apache2.4/cgi-bin/printenv.pl"
SCRIPT_NAME="/cgi-bin/printenv.pl"
SERVER_ADDR="127.0.0.1"
SERVER_ADMIN="(server admin's email address)"
SERVER_NAME="127.0.0.1"
SERVER_PORT="80"
SERVER_PROTOCOL="HTTP/1.1"
SERVER_SIGNATURE=""
SERVER_SOFTWARE="Apache/2.4.39 (Win32) PHP/7.3.7"
SYSTEMROOT="C:\Windows"
TERM="cygwin"
WINDIR="C:\Windows"
ש×××ש×× ×סקר×פ××× ×©× CGI
×§××¦× ×-CGI ××××××× ×ת סקר×פ×× ×-CGI ×ש×ש×× ×××¨× ××× ××¢×××× × ×ª×× × ×§×× ×××שת×ש ××××צר ×ת × ×ª×× × ×פ×× ×ר×××× ××××. ×××עת ×××§× ××× ××ת ×××××××ת ×ת××× ×ת CGI. ×× ×¡××× ××שת×ש ש××× ××§×©× ××©× ×©× ×¢×¨×, שרת ×××× ××¨× × ×פע×× ×ת ת××× ×ת CGI. ת××× ×ת CGI ××§××ת ×ת ×××§×ר ×©× ×××£ ×©× ×××ª× ×¢×¨×, ××××¨× ×××ª× ×-HTML ×××פ××¡× ×ת ×ת×צ××. שרת ×××× ××¨× × ××§×× ×ת ×פ×× ×ת××× ×ª CGI ×××××ר ×××ª× ×ס××× ××שת×ש. ×××ר ×××, ×× ×¡××× ××שת×ש ×§××¨× ×פ×× ×§×¦××ת ×ער××× ×¢× ××× ××××¦× ×¢× ×פת×ר “ער×× ×¢×××”, ת××× ×ת CGI ×צ××× ×××ר ××§×¡× HTML ×× ×¤×§× ×¢×¨××× ××ר ×¢× ×ª××× ××¢×××. ××ס××£, ×× ×¡××× ××שת×ש ××××¥ ×¢× ×פת×ר “×¤×¨×¡× ×¢×××”, ת××× ×ת CGI ××××¨× ×ת ×-HTML ×××¢×××× ×××§×ר ×©× ×¢××× ××¢×¨× ××× ×תש××ר ××ת×.