Heim >Backend-Entwicklung >Python-Tutorial >Was ist CGI? Eine ausführliche Einführung in die Python-CGI-Programmierung
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
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 '<html>'print '<head>'print '<meta charset="utf-8">'print '<title>Hello Word - 我的第一个 CGI 程序!</title>'print '</head>'print '<body>'print '<h2>Hello Word! 我是来自菜鸟教程的第一CGI程序</h2>'print '</body>'print '</html>'
Ändern Sie nach dem Speichern der Datei hello.py und ändern Sie die Dateiberechtigungen auf 755:
chmod 755 hello.py
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='color:green'>%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('name')site_url = form.getvalue('url')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>
【相关推荐】
2. 分享在IIS上用CGI方式运行Python脚本的实例教程
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!