Common Gateway Interface

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Schéma fungování CGI protokolu pro projení externích aplikací s webovým serverem. Common Gateway Interface (zkráceně CGI) je protokol pro propojení externích aplikací s webovým serverem. To serveru umožňuje delegovat požadavek od klienta na externí aplikaci, která dle požadavku vrátí výstup. Taková aplikace typicky zpracuje nějaký skript ve webové stránce a webovému serveru navrátí statickou stránku, která je následně poslána klientovi jako výstup jeho požadavku.

Rozhraní Common Gateway Interface bylo v prostředí internetu přítomno již od počátku 90. let a ve své době představovalo jediný způsob dynamického zpracování obsahu. +more Postupně vznikla efektivnější řešení (FastCGI, integrace skriptovacích jazyků jako modulu WWW serveru) a CGI bylo vytlačeno do ústraní.

Další informace

Webový server, který podporuje rozhraní CGI, lze nakonfigurovat pro interpretaci adresy URL, která odkazuje na CGI skripty. Standardně se cgi-bin adresáře ukládají v kořenovém adresáři stromové struktury a se všemi takto uloženými soubory se nakládá jako s CGI skripty. +more Další populární úmluva je rozpoznávání pomocí přípony; například pokud je u CGI skriptů použita přípona . cgi, může být webový server nakonfigurován tak, aby interpretoval všechny tyto soubory jako CGI skripty.

V případě použití HTTP metody PUT nebo POST jsou uživatelská data předána v rámci programu přes standardní vstup. V každém případě se podle standardu CGI data předávají do aplikace pomocí některých specifických proměnných prostředí. +more Toto je v kontrastu s typickým provedením, kde argumenty příkazové řádky jsou používány a prostředí je v nepřetržitém běhu a nedá se mu věřit. Webový server vytváří malé a účinné podmnožiny proměnných prostředí jemu předaných a přidává detaily vztahující se k vykonání programu.

Jednoduchý příklad

Následující CGI program vypisuje všechny proměnné prostředí povolené na webovém serveru:

#!/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"; }

* Pokud si webový prohlížeč vyžádá informace proměnných prostředí na

, 64bitový [url=_ACCEPT="text/html,application/xhtml+xml,application/xml;q=0. 9,*/*;q=0. +more8" [/url]url=_ACCEPT_CHARSET="ISO-8859-1,utf-8;q=0. 7,*;q=0. 7" [/url]url=_ACCEPT_ENCODING="gzip, deflate" [/url]url=_ACCEPT_LANGUAGE="en-us,en;q=0. 5" [/url]url=_CONNECTION="keep-alive" [/url]url=_HOST="example. com" [/url]url=_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. 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. 1" SERVER_ADMIN="(server admin's email address)" SERVER_NAME="127. 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".

Z výpisu vidíme, že uživatel používá prohlížeč [[Firefox]url= Server|Apache][Microsoft Windows]] webový server na kterém běží Cygwin vrátí následující informace:

COMSPEC="C:\Windows\system32\cmd. exe" DOCUMENT_ROOT="C:/Program Files (x86)/Apache Software Foundation/Apache2. +more2/htdocs" GATEWAY_INTERFACE="CGI/1. 1" HOME="/home/SYSTEM" [/url]], který běží na operačním systému Windows 7. Webový server [[Apache[/url]] běží na systému, který emuluje Unix, a CGI skript má název cgi-bin/printenv. pl.

Reference

Související články

FastCGI * Web Server Gateway Interface

Externí odkazy

[url=http://www.w3.org/CGI/]Popis CGI standardu na stránkách W3.org[/url]

Kategorie:World Wide Web

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top