Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist CGI? Eine ausführliche Einführung in die Python-CGI-Programmierung

Was ist CGI? Eine ausführliche Einführung in die Python-CGI-Programmierung

零下一度
零下一度Original
2017-05-19 12:42:424581Durchsuche

Was ist CGI

CGI wird derzeit von NCSA verwaltet NCSA definiert CGI wie folgt:

CGI (Common Gateway Interface), Common Gateway Interface, ein Programm, das auf einem Server wie einem HTTP-Server ausgeführt wird, stellt eine Schnittstelle zur HTML-Seite des Clients bereit.

Websurfen

Um besser zu verstehen, wie CGI funktioniert, können wir mit dem Klicken auf einen Link oder eine URL auf einer Webseite beginnen:

1 Der Browser greift auf die URL zu und stellt eine Verbindung zum HTTP-Webserver her.

2. Nach Erhalt der Anforderungsinformationen analysiert der Webserver die URL und prüft, ob die Datei vorhanden ist. Wenn die Datei vorhanden ist, wird der Inhalt der Datei zurückgegeben eine Fehlermeldung.

3. Der Browser empfängt Informationen vom Server und zeigt die empfangene Datei oder Fehlermeldung an.

CGI-Programm kann ein Python-Skript, ein PERL-Skript, ein SHELL-Skript, ein C- oder C++-Programm usw. sein.

CGI-Architekturdiagramm

Was ist CGI? Eine ausführliche Einführung in die Python-CGI-Programmierung

Webserver-Unterstützung und -Konfiguration

Bevor Sie die CGI-Programmierung durchführen, stellen Sie sicher, dass Ihr Webserver CGI und The unterstützt Der CGI-Handler wurde konfiguriert.

Apache unterstützt die CGI-Konfiguration:

CGI-Verzeichnis einrichten:

ScriptAlias /cgi-bin/ /var/www/cgi-bin/

Alle CGI-Programme zur HTTP-Serverausführung werden in einem vorkonfigurierten Verzeichnis gespeichert. Dieses Verzeichnis wird als CGI-Verzeichnis bezeichnet und laut Konvention /var/www/cgi-bin.

Die Erweiterung von CGI-Dateien ist .cgi, und Python kann auch die Erweiterung .py verwenden.

Standardmäßig ist das cgi-bin-Verzeichnis, in dem der Linux-Server für die Ausführung konfiguriert ist, /var/www.

Wenn Sie andere Verzeichnisse zum Ausführen von CGI-Skripten angeben möchten, können Sie die Konfigurationsdatei httpd.conf wie folgt ändern:

<Directory "/var/www/cgi-bin">
   AllowOverride None
   Options +ExecCGI
   Order allow,deny
   Allow from all</Directory>

Fügen Sie das Suffix .py in AddHandler hinzu, damit wir dies können Greifen Sie auf die Python-Skriptdatei zu, die mit .py endet:

AddHandler cgi-script .cgi .pl .py

Das erste CGI-Programm

Wir verwenden Python, um das erste CGI-Programm zu erstellen, der Dateiname ist hello.py und die Datei befindet sich in /var Im Verzeichnis /www/cgi-bin lautet der Inhalt wie folgt:

#!/usr/bin/python# -*- coding: UTF-8 -*-print "Content-type:text/html"print                               # 空行,告诉服务器结束头部print &#39;<html>&#39;print &#39;<head>&#39;print &#39;<meta charset="utf-8">&#39;print &#39;<title>Hello Word - 我的第一个 CGI 程序!</title>&#39;print &#39;</head>&#39;print &#39;<body>&#39;print &#39;<h2>Hello Word! 我是来自菜鸟教程的第一CGI程序</h2>&#39;print &#39;</body>&#39;print &#39;</html>&#39;

Ändern Sie nach dem Speichern der Datei hello.py und ändern Sie die Dateiberechtigungen auf 755:

chmod 755 hello.py

Was ist CGI? Eine ausführliche Einführung in die Python-CGI-Programmierung

Dieses hello.py-Skript ist ein einfaches Python-Skript. Der Ausgabeinhalt der ersten Zeile des Skripts „Content-type: text/html“ wird an den Browser gesendet und teilt dem Browser mit, dass der angezeigte Inhaltstyp „text/html“ ist.

Verwenden Sie print, um eine Leerzeile auszugeben, um den Server anzuweisen, die Header-Informationen zu beenden.

HTTP-Header

Der „Content-type: text/html“ im Inhalt der hello.py-Datei ist Teil des HTTP-Headers, der an den Browser gesendet wird, um ihn darüber zu informieren den Inhaltstyp.

Das Format des HTTP-Headers ist wie folgt:

HTTP 字段名: 字段内容

Zum Beispiel:

Content-type: text/html

Das Folgende ist ein einfaches CGI-Skript, das CGI-Umgebungsvariablen ausgibt:

#!/usr/bin/python# -*- coding: UTF-8 -*-# filename:test.pyimport osprint "Content-type: text/html"printprint "<meta charset=\"utf-8\">"print "<b>环境变量</b><br>";print "<ul>"for key in os.environ.keys():    print "<li><span style=&#39;color:green&#39;>%30s </span> : %s </li>" % (key,os.environ[key])print "</ul>"

GET- und POST-Methoden

Der Browser-Client überträgt Informationen über zwei Methoden an den Server, diese beiden Methoden sind die GET-Methode und die POST-Methode.

使用GET方法传输数据

GET方法发送编码后的用户信息到服务端,数据信息包含在请求页面的URL上,以"?"号分割, 如下所示:

www.test.com/cgi-bin/hello.py?key1=value1&key2=value2


有关 GET 请求的其他一些注释:

GET 请求可被缓存

GET 请求保留在浏览器历史记录中

GET 请求可被收藏为书签

GET 请求不应在处理敏感数据时使用

GET 请求有长度限制

GET 请求只应当用于取回数据

简单的url实例:GET方法

以下是一个简单的URL,使用GET方法向hello_get.py程序发送两个参数:

/cgi-bin/test.py?name=菜鸟教程&url=www.runoob.com

以下为hello_get.py文件的代码:

#!/usr/bin/python# -*- coding: UTF-8 -*-# filename:test.py# CGI处理模块import cgi, cgitb 
# 创建 FieldStorage 的实例化form = cgi.FieldStorage() 
# 获取数据site_name = form.getvalue(&#39;name&#39;)site_url  = form.getvalue(&#39;url&#39;)print "Content-type:text/html"printprint "<html>"print "<head>"print "<meta charset=\"utf-8\">"print "<title>菜鸟教程 CGI 测试实例</title>"print "</head>"print "<body>"print "<h2>%s官网:%s</h2>" % (site_name, site_url)print "</body>"print "</html>"

文件保存后修改 hello_get.py,修改文件权限为 755:

chmod 755 hello_get.py

简单的表单实例:GET方法

以下是一个通过HTML的表单使用GET方法向服务器发送两个数据,提交的服务器脚本同样是hello_get.py文件,hello_get.html 代码如下:

<!DOCTYPE html><html><head><meta charset="utf-8"><title>菜鸟教程(runoob.com)</title></head><body>
<form action="/cgi-bin/hello_get.py" method="get">站点名称: <input type="text" name="name">  <br />
站点 URL: <input type="text" name="url" /><input type="submit" value="提交" /></form></body></html>

【相关推荐】

1. 详解cgi向文本或者数据库写入数据实例代码

2. 分享在IIS上用CGI方式运行Python脚本的实例教程

3. 使用CGI模块建立简单web页面教程实例

4. 分享一个PythonCGI编程的实例教程

5. 详解XML与现代CGI应用程序的示例代码

6. FastCGI 进程意外退出造成500错误

Das obige ist der detaillierte Inhalt vonWas ist CGI? Eine ausführliche Einführung in die Python-CGI-Programmierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn