Common Gateway Interface![]() Το CGI (Common Gateway Interface - μεταφράζεται ως "κοινή διεπαφή πύλης") είναι μια επέκταση της λειτουργικότητας του εξυπηρετητή ιστοσελίδων (web server) η οποία παρέχει τη δυνατότητα εκτέλεσης προγραμμάτων ή σεναρίων στον εξυπηρετητή αντί της απλής, αυτόματης αποστολής στατικών σελίδων.[1][2] ΙστορικόΟ αρχικός σχεδιασμός των εξυπηρετητών ιστοσελίδων ήταν η αποστολή, στον φυλλομετρητή ιστοσελίδων, μιας έτοιμης σελίδας που υπήρχε ήδη στο σύστημα. Για παράδειγμα όταν κάποιος ζητήσει το Το 1993 το Αμερικάνικο «Εθνικό Κέντρο Εφαρμογών για Υπερυπολογιστές» (NCSA) συζήτησε τη δυνατότητα δημιουργίας μιας διεπαφής η οποία θα μπορούσε να εκτελεί προγράμματα στον εξυπηρετητή ώστε να δημιουργούνται δυναμικές σελίδες. Οι συζητήσεις διενεργήθηκαν σε μία λίστα ηλεκτρονικού ταχυδρομείου και κατέληξαν στη δημιουργία του RFC 3875. Πως λειτουργείΑν ο εξυπηρετητής έχει ενεργή τη δυνατότητα εκτέλεσης σεναρίων CGI τότε οι σελίδες που βρίσκονται στο φάκελο ο οποίος έχει δηλωθεί ως φάκελος για CGI δεν επιστρέφονται αυτούσιες, αλλά λειτουργούν ως μικρά προγράμματα τα οποία «τρέχουν» στον εξυπηρετητή και το περιεχόμενο της εξόδου τους στέλνεται πίσω στον φυλλομετρητή ιστοσελίδων. Για παράδειγμα το αρχικό ΠαράδειγμαΟ παρακάτω κώδικας CGI σε γλώσσα προγραμματισμού Perl εμφανίζει όλες τις μεταβλητές που έχει ο εξυπηρετητής: #!/usr/local/bin/perl
##
## printenv—demo CGI πρόγραμμα το οποίο τυπώνει τις μεταβλητές του συστήματος
##
#
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";
}
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" Από τις μεταβλητές περιβάλλοντος, μπορούμε να δούμε ότι ο φυλλομετρητής είναι ο Firefox ο οποίος τρέχει σε λειτουργικό Windows 7 με επεξεργαστή 64bit. Ο εξυπηρετητής είναι ο Apache και το σύστημα προσομοιώνει το λειτουργικό Unix. Το σενάριο CGI ονομάζεται cgi-bin/printenv.pl. Παραπομπές
Εξωτερικοί σύνδεσμοι
|