Simple Common Gateway Interface

Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 27. Dezember 2012 um 16:22 Uhr durch 80.122.38.66 (Diskussion) (http://zuu.dk/index.php?page=simple-cgi). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Das Simple Common Gateway Interface (SCGI) ist ein Standard für den Datenaustausch zwischen einem Webserver und dritter Software, die Anfragen bearbeitet. Es ist eine Alternative zu klassischem CGI und ähnelt dem FastCGI-Protokoll.

Die Spezifikation wurde von Neil Schemenauer erstellt und am 12. Januar 2006 als gemeinfreie Spezifikation veröffentlicht. Im Vergleich zu FastCGI ist das SCGI-Protokoll einfacher zu implementieren; moderne Webserver bieten mittlerweile gleichermaßen Unterstützung für FastCGI und SCGI an.

Protokollbeschreibung

Jeder SCGI-Request (engl. Anfrage) ist aus einer Liste von Header aufgebaut. Jeder dieser Header besteht aus einem Key-Value-Pair (Schlüssel-Wert-Paar) das mit einem ASCII-NULL (NUL) getrennt und abgeschlossen. Jeder Header-Name darf dabei nur einmal vorkommen.

Der erste Header muss den Namen CONTENT_LENGTH haben und darf nicht leer sein, selbst wenn die Länge 0 beträgt. Danach muss ein Header mit dem Namen SCGI und dem Wert 1 vorhanden sein. Alle weiteren Header sind optional.

<Key> <NUL> <Value> <NUL>

SCGI-Request

CONTENT_LENGTH <NUL> <Länge> <NUL> SCGI <NUL> 1 <NUL> ...

Beim Übertragem des SCGI-Requests wird dieser als Netstring codiert und über eine eigene Verbindung zur SCGI-Applikation versendet.

Nach Dekodieren der Anfrage sendet die SCGI-Applikation auf der geöffneten Verbindung die Antwort, die in der Praxis wie bei CGI üblich mit dem Status-Parameter beginnt; allerdings definiert das Protokoll selbst kein Format für die Antwort [1]. Nach Versenden der CGI-Antwort wird die Verbindung von der SCGI-Applikation beendet.

Da eine SCGI-Verbindung mit einem ASCII '1' bis '9'-Byte beginnt, kann eine SCGI-kodierte Anfrage von einem HTTP-Forward unterschieden werden – eine laufende SCGI-Applikation kann so leicht in die Lage versetzt werden, gleichermaßen SCGI-Anfragen und HTTP GET/POST-Anfragen zu behandeln.

Webserverunterstützung

Folgende Webserver unterstützen das SCGI-Protokoll.

Sprachanbindung

Folgende Programmiersprachen unterstützen die Erstellung von SCGI-Applikationen per Sprachanbindung:

Einzelnachweise

  1. SCGI-Spezifikation, § 2