ä»ä¹æ¯ä¸ .cgi æä»¶ï¼
CGI æä»¶ç§°ä¸ºéç¨ç½å ³æ¥å£èæ¬ï¼Web æå¡å¨ä½¿ç¨å®æ¥è¿è¡å¤é¨ç¨åºæ¥å¤çç¨æ·è¯·æ±ãä¿å卿©å±å为 .cgi çæä»¶ä¸çèæ¬é常æ¯ç¨ C æ Perl ç¼ç¨è¯è¨ç¼åçãæ©å¨ Web å¼åäººåæ³è¦å°æ°æ®åºè¿æ¥å°ä»ä»¬ç Web æå¡å¨æ¶ï¼å®å°±å·²ç»è¢«å¼å ¥äºãæ¯æ Web æå¡å¨åæ°æ®åºä¹é´çå ¬å ±ç½å ³çæå¡å¨é常éåæ§è¡ CGI 代ç ã
CGI æä»¶æ ¼å¼
Web æå¡å¨ä½¿ç¨ CGI èæ¬æ¥å¸®å©ææè é ç½® URL çå¤çæ¹å¼ã该è¿ç¨é常éè¿å°ä¸ä¸ªæ°ç®å½ï¼æä»¶ä¸»è¦ä½äºè¯¥ç®å½ï¼æ 记为å å« CGI èæ¬æ¥å®æï¼å®çä¿ç§°æ¯cgi-binãä¾å¦ï¼/usr/local/apache/htdocs/cgi-bin å¯ä»¥è¢«é为 Web æå¡å¨ä¸ç CGI ç®å½ãå½ Web æµè§å¨è¯·æ±æå CGI ç®å½ä¸æä»¶ç URL æ¶ï¼HTTPæå¡å¨æ§è¡æå®çèæ¬å¹¶å°èæ¬çè¾åºè¿åç» Web æµè§å¨ãç®èè¨ä¹ï¼CGI èæ¬åéå°æ åè¾åºçä»»ä½å 容é½ä¼è¢«ä¼ è¾å° Web 客æ·ç«¯ï¼è䏿¯æ¾ç¤ºå¨çªå£çç»ç«¯ä¸ã
CGI 示ä¾
ä¸é¢æ¯ç¨ Perl ç¼åç CGI èæ¬ï¼å®æ¾ç¤ºäº Web æå¡å¨ä¼ éçææç¯å¢åéï¼
#!/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 æä»¶é常ç¨äºå¤çæ¥èªç¨æ·çè¾å ¥æ°æ®å¹¶çæç¸å ³çè¾åºæ°æ®ãå®ç° wiki æ¯ CGI ç¨åºç示ä¾ä¹ä¸ãå¦æç¨æ·ä»£çåéæ¡ç®åç§°ç请æ±ï¼Web æå¡å¨å°è¿è¡ CGI ç¨åºã CGI ç¨åºè·å该æ¡ç®é¡µé¢çæºï¼å°å ¶è½¬æ¢ä¸º HTMLï¼ç¶åæå°ç»æã Web æå¡å¨æ¥æ¶æ¥èª CGI ç¨åºçè¾åºå¹¶å°å ¶è¿åç»ç¨æ·ä»£çãç¶åï¼å¦æç¨æ·ä»£çéè¿åå»âç¼è¾é¡µé¢"æé®è°ç¨ç¼è¾å½æ°ï¼CGI ç¨åºä¼æ¾ç¤ºä¸ä¸ª HTML ææ¬åºåæå ¶ä»å¸¦æé¡µé¢å 容çç¼è¾æ§ä»¶ãæåï¼å¦æç¨æ·ä»£çåå»âåå¸é¡µé¢"æé®ï¼CGI ç¨åºä¼å°æ´æ°åç HTML 转æ¢ä¸ºè¯¥æ¡ç®é¡µé¢çæºå¹¶ä¿åã