واسط دروازه مشترک
واسط دروازهٔ مشترک (سیجیآی) یک متد استاندارد است که برای ایجاد محتوای پویا در صفحات وب و برنامههای کاربردی وب استفاده میشود. سیجیآی هنگامی که روی یک وبسرور اجرا میشود، یک واسطه میان وبسرور و برنامههایی که محتوای وب را ایجاد میکنند به وجود میآورد. این برنامهها را CGI Script یا بهطور خلاصه CGI مینامند که معمولاً با زبانهای اسکریپت نویسی مثل پایتون ، روبی، پرل نوشته میشوند، اما امکان نوشتن آنها با زبانهای برنامهنویسی نیز وجود دارد.
نگارش
برنامهٔ CGI زیر تمام متغیرهای محیط که از سرور وب عبور کردهاند را نشان میدهد:
# !/usr/bin/perl
=head1 DESCRIPTION
printenv — a CGI program that just prints its environment
=cut
print "Content-type: text/plain\r\n\r\n";
for my $var ( sort keys %ENV ) {
printf "%s = \"%s\"\r\n", $var, $ENV{$var};
}
اگر یک جستجوگر وب، درخواستی مانند:
http://example.com/cgi-bin/printenv.pl/foo/bar?var1=value1&var2=with percent encoding
را برای متغیرهای محیطی مطرح کند، در یک ویندوز ۶۴ بیتی ارائه دهنده وب که سیگوین را اجرا میکند، اطلاعات زیر را برمیگرداند:
COMSPEC="C:\Windows\system32\cmd.exe"
DOCUMENT_ROOT="C:/Program Files (x86)/Apache Software Foundation/Apache2.2/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"
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:5.0) Gecko/20100101 Firefox/5.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.2\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.2/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.2.19 (Win32) PHP/5.2.17"
SYSTEMROOT="C:\Windows"
TERM="cygwin"
WINDIR="C:\Windows"