The Common Gateway Interface (CGI) is a standard (see RFC 3875: CGI Version 1.1) method for web server software to delegate the generation of web pages to executable files. Such files are known as CGI scripts; they are programs, often stand-alone applications, usually written in a scripting language.
Contents |
A web server that supports CGI can be configured to interpret a URL that it serves as a reference to a CGI script. A common convention is to have a cgi-bin/ directory at the base of the directory tree and treat all executable files within it as CGI scripts. Another popular convention is to use filename extensions; for instance, if CGI scripts are consistently given the extension .cgi, the web server can be configured to interpret all such files as CGI scripts.
In the case of HTTP PUT or POSTs, the user-submitted data is provided to the program via the standard input. The web server creates a small and efficient subset of the environment variables passed to it and adds details pertinent to the execution of the program.
The following CGI program shows all the environment variables passed by the web server:
<syntaxhighlight lang="perl">
#!/usr/local/bin/perl ## ## printenv—demo CGI program which just prints its environment ## # print "Content-type: text/plain\n\n"; foreach $var (sort(keys(%ENV))) { $val = $ENV{$var}; $val =~ s/\n/\\n/g; $val =~ s/"/\\"/g; print "${var}=\"${val}\"\n"; }
</syntaxhighlight>
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"
From the environment, we see that the web browser is Firefox running on a Windows 7 PC, the web server is Apache running on a system which emulates Unix, and the CGI script is named cgi-bin/printenv.pl.
The program could then generate any content, write that to its standard output, and the web server will transmit it to the browser.
The program returns the result to the web server in the form of standard output, beginning with a header and a blank line.
The header is encoded in the same way as an HTTP header and must include the MIME type of the document returned.[1] The headers, supplemented by the web server, are generally forwarded with the response back to the user.
An example of a CGI program is one implementing a wiki. The user agent requests the name of an entry; the server retrieves the source of that entry's page (if one exists), transforms it into HTML, and sends the result.
In 1993, the World Wide Web (WWW) was small but booming. WWW software developers and web site developers kept in touch on the www-talk mailing list, so it was there that a standard for calling command line executables was agreed upon. Specifically mentioned in RFC 3875[2] are the following contributors:
The NCSA team wrote the specification,[3] however, NCSA no longer hosts this.[4][5] (A possible mirror of the original documentation is available.[6]) The other web server developers adopted it, and it has been a standard for web servers ever since. Since its initial adoption an effort was mounted to get it published more formally which resulted in RFC 3875.
Calling a command generally means the invocation of a newly created process on the server. Starting the process can consume much more time and memory than the actual work of generating the output, especially when the program still needs to be interpreted or compiled. If the command is called often, the resulting workload can quickly overwhelm the web server.
The overhead involved in interpretation may be reduced by using compiled CGI programs, such as those in C/C++, rather than using Perl or other scripting languages. The overhead involved in process creation can be reduced by solutions such as FastCGI, or by running the application code entirely within the web server using extension modules such as mod_php.
Several approaches can be adopted for remedying this:
The optimal configuration for any web application depends on application-specific details, amount of traffic, and complexity of the transaction; these tradeoffs need to be analyzed to determine the best implementation for a given task and time budget.
|
CGI may refer to:
CGI Group Inc.,Conseillers en gestion et informatique more commonly known as CGI, is a global information technology (IT) consulting, systems integration, outsourcing, and solutions company headquartered in Montreal, Canada. Founded in 1976 by Serge Godin and André Imbeau as an IT consulting firm, the company soon began branching into new markets and acquiring other companies. CGI went public in 1986 with a primary listing on the Toronto Stock Exchange. CGI is also a constituent of the S&P/TSX 60, and has a secondary listing on the New York Stock Exchange. After almost doubling in size with the 1998 acquisition of Bell Sygma, CGI acquired IMRGlobal in 2001 for $438 million, which added "global delivery options" for CGI. Other significant purchases include American Management Systems (AMS) for $858 million in 2004, which grew CGI's presence in the United States, Europe and Australia and led to the formation of the CGI Federal division.
CGI Federal's 2010 acquisition of Stanley, Inc. for $1.07 billion almost doubled CGI's presence in the United States, and expanded CGI into defense and intelligence contracts. In 2012 CGI acquired Logica for $2.7 billion Canadian, making CGI the fifth-largest independent business processes and IT services provider in the world, and the biggest tech firm in Canada. In 2014 CGI ranked No. 974 on the Forbes Forbes Global 2000, which ranks the world's largest public companies. At the time CGI had assets worth USD $11.1 billion, annual sales of $9.9 billion, and a market value of $9.6 billion. As of 2015 CGI is based in forty countries with around 400 offices, and employs approximately 65,000 people. Canada made up 15% of CGI's client base of March 2015. 29% was in the United States, while around 40% of their commissions came from Europe. 15% was the rest of the world.
New York is a state in the Northeastern United States and is the United States' 27th-most extensive, fourth-most populous, and seventh-most densely populated state. New York is bordered by New Jersey and Pennsylvania to the south and Connecticut, Massachusetts, and Vermont to the east. The state has a maritime border in the Atlantic Ocean with Rhode Island, east of Long Island, as well as an international border with the Canadian provinces of Quebec to the north and Ontario to the west and north. The state of New York, with an estimated 19.8 million residents in 2015, is often referred to as New York State to distinguish it from New York City, the state's most populous city and its economic hub.
With an estimated population of nearly 8.5 million in 2014, New York City is the most populous city in the United States and the premier gateway for legal immigration to the United States. The New York City Metropolitan Area is one of the most populous urban agglomerations in the world. New York City is a global city, exerting a significant impact upon commerce, finance, media, art, fashion, research, technology, education, and entertainment, its fast pace defining the term New York minute. The home of the United Nations Headquarters, New York City is an important center for international diplomacy and has been described as the cultural and financial capital of the world, as well as the world's most economically powerful city. New York City makes up over 40% of the population of New York State. Two-thirds of the state's population lives in the New York City Metropolitan Area, and nearly 40% live on Long Island. Both the state and New York City were named for the 17th century Duke of York, future King James II of England. The next four most populous cities in the state are Buffalo, Rochester, Yonkers, and Syracuse, while the state capital is Albany.
Konerak Sinthasomphone
Roamed away from his home
The Jeffrey offered him money
If he'd take off his clothes and pose
He drugged him and had oral sex
With Konerak Sinthasomphone
Then Jeffrey went out for some beer
And left him asleep at his home
Konerak Sinthasomphone was the boy
The police brought back to Jeffery's home
And left them alone
Then Jeffrey Dahmer turned the boy into bones
Konerak Sinthasomphone roamed
Away from Jeff's home
Some woman saw him running naked
And 911 they phoned
The police brought Jeff and Konerak to the apartment
And left them alone
Then Jeffrey kill and dismembered