2016-07-09 17 views
0

Ich bin neu mit Skriptsprachen und wir werden im September einige CGI-Skripte starten. Ich bin verwirrt zwischen CGI und Perl.Ist CGI-Skript eine separate Skriptsprache?

Sind sie gleich, oder sind dies zwei verschiedene Sprachen?

+2

Sie hätten es einfach googeln können. https://en.wikipedia.org/wiki/Common_Gateway_Interface – tkausl

+0

Übrigens, wo wirst du "beginnen ein paar CGI-Skripte im September"? Das ist keine vernünftige Möglichkeit, Webanwendungen im Jahr 2016 zu schreiben. Sie sollten stattdessen [PSGI/Plack] (http://plackperl.org/) betrachten. –

Antwort

7

CGI ist keine Programmiersprache.

CGI ist ein Protokoll, das von Webservern verwendet wird, um die Verarbeitung einer HTTP-Anforderung an ein Programm zu delegieren, das für diesen Zweck ausgeführt wird. Es ermöglicht dynamisch generierte Webseiten.

Während Perl eine allgemeine Wahl ist, kann das Programm, das die Anfrage für den Webserver bearbeitet, in jeder Sprache geschrieben werden.

2

Nein. CGI ist keine Sprache. Es ist lediglich eine Vereinbarung darüber, wie Webserver (z. B. Apache) und "Programme" auf dem Server interagieren. Diese "Programme" können in jeder gewünschten Sprache geschrieben werden, sei es Perl, PHP, Python oder sogar C/C++.

Zum Beispiel, wenn Sie die URL aufrufen http://www.example.com/cgi-bin/myscript?parm1=X & parm2 = Y dann der Webserver (Apache für diese Angelegenheit) führt das Programm " myscript "und füttert irgendwie die Parameter" parm1 "und" parm2 "(zusammen mit ihren Werten X und Y) zu diesem Programm. Dies könnte als Umgebungsvariablen oder als STDIN sein.

CGI definiert wie die Variablen (unter anderem) vertauscht und wie das Programm seine Ergebnisse.

Das Programm selbst kann in jeder beliebigen Sprache geschrieben werden, solange es von Apache ausgeführt werden kann.

Sehr oft sind diese CGI-Programme eigentlich Skripte (im Gegensatz zu kompilierten Binärdateien), also der gebräuchliche Begriff "CGI-Skript".

+3

Eigentlich hat es nichts mit den Kunden zu tun. Es ist eine Schnittstellenspezifikation zwischen dem Web *** -Server *** (d. H. Apache, nginx usw.) und Benutzerprogrammen, die von und auf dem Server ausgeführt werden können, um auf Anforderungen von Clients zu antworten. –

+0

Ja, @ JimGarrison, Sie haben Recht. Die Kunden sind nicht wirklich an CGI beteiligt (obwohl sie die Anfrage initiiert haben). Ich wollte nur klarstellen, dass CGI keine andere Sprache ist, sondern den Gesamtzusammenhang zeigt. Ich werde versuchen, meine Antwort zu korrigieren. – PerlDuck

+0

@JimGarrison Ich habe meine Antwort aktualisiert und den Verweis auf die Clients gelöscht. // BTW: Die Frage ist sowieso ein bisschen OT, aber ich wollte sie nicht als solche kennzeichnen. Ich denke, es schadet nicht, dem OP eine Idee zu geben, worum es bei CGI geht. – PerlDuck

4

Wie RFC 3875 erklärt:

Die Common Gateway Interface (CGI) für die Ausführung von externen Programmen, Software oder Gateways unter einem Informationsserver in einer plattformunabhängigen Weise eine einfache Schnittstelle ist. Derzeit sind die unterstützten Informationsserver HTTP-Server.

Die Schnittstelle ist seit dem im Einsatz durch das World Wide Web (WWW) 1993.

CGI-Programme können so lange in jeder Sprache, kompiliert oder interpretiert implementiert werden, wie sie an die Schnittstelle entsprechen.

Es gab Versuche, die CGI-Spezifikation zuerst zu 1.1, dann zu 1.2 zu aktualisieren, aber ich glaube, beide wurden abgebrochen. W3C's CGI page hat einige Links von historischem Interesse.

2

Ein möglicher Grund für die Verwirrung ist, dass in der zweiten Hälfte der 1990er Jahre, als CGI sehr populär wurde, Perl die Sprache war, die wahrscheinlich am häufigsten zum Schreiben von CGI-Programmen verwendet wurde. Dies bedeutete, dass die beiden Begriffe in einigen Köpfen untrennbar miteinander verbunden waren.

In der Tat habe ich Leute sagen sagen, dass nur Perl verwendet werden kann, um CGI-Programme zu schreiben, und dass CGI-Programmierung das einzige ist, für das Perl verwendet werden kann. Keine dieser Aussagen ist wahr.

Verwandte Themen