Andy: CGI Variablen und HTTP Header Variablen

Hallo, ich bin etwas verwirrt mit der Bezeichnung CGI Variablen.
Habe ich es richtig verstanden, das mit CGI Variablen eigentlich die Standard HTTP Header Variablen gemeint sind.

CGI ist ja kein Programm oder Skript sondern ein Mechanismus um den Script mit dem Web-Server zu verbinden. PHP oder ColdFusion laufen ja aber nicht mehr über CGI Schnittstelle sonder über die API Schnittstelle. Trotzdem ist immer die Rede von CGI Varibalen, wie z.B. #Remote_Addr# oder #http_USER_Agent#. Dies sind für mich aber eher Standard HTTP Variablen.

Habe ich etwas völlig falsch verstanden oder nicht?
Über ein Feedback würde ich mich freuen.

  1. Hallo, ich bin etwas verwirrt mit der Bezeichnung CGI Variablen.
    Habe ich es richtig verstanden, das mit CGI Variablen eigentlich die Standard HTTP Header Variablen gemeint sind.

    CGI ist ja kein Programm oder Skript sondern ein Mechanismus um den Script mit dem Web-Server zu verbinden. PHP oder ColdFusion laufen ja aber nicht mehr über CGI Schnittstelle sonder über die API Schnittstelle. Trotzdem ist immer die Rede von CGI Varibalen, wie z.B. #Remote_Addr# oder #http_USER_Agent#. Dies sind für mich aber eher Standard HTTP Variablen.

    Habe ich etwas völlig falsch verstanden oder nicht?
    Über ein Feedback würde ich mich freuen.

    Was du da ansprichst, sind die Umgebungsvariablen, die per Schnitstellendefinition des CGI gesetzt werden, damit Programme, die via CGI aufgerufen werden, Request-Informationen bekommen.

    Dazu gehören Dinge, die aus Protokollen unter HTTP liegen, wie REMOTE_ADDR (eine Variable, der man weitesgehend vertrauen kann), Dinge, die der Server für uns aus dem Request sicherstellt, wie QUERY_STRING oder REQUEST_URI (auch Vertrauenswürdige) und direkte, rohe Requestheader mit dem Prefix HTTP_, also HTTP_USER_AGENT (absolut nicht vertrauenswürdig).

    PHP arbeitet nicht via mod_cgi, sondern als eigenes Modul, trotzdem ist die Schnittstelle fast wie CGI, abgesehen von der höheren Performance natürlich. Coldfusion kenn ich nicht, aber du sagst ja selbst, dass man sich dort auch an diese Namen hält.

    Das ist ganz einfach so, weil all diese Schnittstellen kaum eine andere Sache tun, als Dinge am CGI, denn sie alle dienen der Contentgenerierung und es wäre kontraproduktiv, jedesmal das Interface völlig zu erneuern. Ganz abgesehen davon, dass das Interface z.B. bei PHP nicht über Umgebungsvariablen und STDIN, sondern über $_GET,$_POST und $_SERVER (oder so) funktioniert.

    Wirklich "anders" wird es, wenn auch etwas anderes passiert, wie bei mod_perl, wo die Informationen über ein Objekt an den handler gegeben werden. Aber auch dort heisst der QUERY_STRING einfach QUERY_STRING (via query_strung() Methode...), weil das Teil nunmal so heisst ;)

    Es sind aber keinesfalls "Standard HTTP Variablen", sondern eher eine "Namenskonvention für Contentgenerierungsschnittstellen am Backend von HTTP-Daemons, resultierend aus dem CGI Standard"