Maison >développement back-end >Tutoriel Python >Qu'est-ce que CGI ? Une introduction détaillée à la programmation Python CGI

Qu'est-ce que CGI ? Une introduction détaillée à la programmation Python CGI

零下一度
零下一度original
2017-05-19 12:42:424692parcourir

Qu'est-ce que CGI

CGI est actuellement maintenu par NCSA NCSA définit CGI comme suit :

CGI (Common Gateway Interface), Common Gateway Interface, qui est un programme qui s'exécute sur un serveur tel qu'un serveur HTTP, fournit une interface avec la page HTML du client.

Navigation Web

Afin de mieux comprendre le fonctionnement de CGI, nous pouvons commencer par le processus de clic sur un lien ou une URL sur une page Web :

1. Le navigateur accède à l'URL et se connecte au serveur Web HTTP.

2. Après avoir reçu les informations de la demande, le serveur Web analysera l'URL et vérifiera si le fichier consulté existe sur le serveur. Si le fichier existe, il renverra le contenu du fichier, sinon il renverra. un message d'erreur.

3. Le navigateur reçoit des informations du serveur et affiche le fichier ou le message d'erreur reçu.

Le programme CGI peut être un script Python, un script PERL, un script SHELL, un programme C ou C++, etc.

Schéma d'architecture CGI

Quest-ce que CGI ? Une introduction détaillée à la programmation Python CGI

Prise en charge et configuration du serveur Web

Avant d'effectuer la programmation CGI, assurez-vous que votre serveur Web prend en charge CGI et The Le gestionnaire CGI a été configuré.

Apache prend en charge la configuration CGI :

Configurez le répertoire CGI :

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

Tous les programmes CGI d'exécution du serveur HTTP sont enregistrés dans un répertoire préconfiguré. Ce répertoire est appelé répertoire CGI, et par convention, il est nommé /var/www/cgi-bin.

L'extension des fichiers CGI est .cgi, et python peut également utiliser l'extension .py.

Par défaut, le répertoire cgi-bin dans lequel le serveur Linux est configuré pour s'exécuter est /var/www.

Si vous souhaitez spécifier d'autres répertoires pour exécuter les scripts CGI, vous pouvez modifier le fichier de configuration httpd.conf comme suit :

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

Ajoutez le suffixe .py dans AddHandler afin que nous puissions Accédez au fichier de script python se terminant par .py :

AddHandler cgi-script .cgi .pl .py

Le premier programme CGI

Nous utilisons Python pour créer le premier programme CGI, le nom du fichier est hello.py, et le fichier se trouve dans /var Dans le répertoire /www/cgi-bin, le contenu est le suivant :

#!/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;

Après avoir enregistré le fichier, modifiez hello.py et modifiez les permissions du fichier à 755 :

chmod 755 hello.py

Quest-ce que CGI ? Une introduction détaillée à la programmation Python CGI

Ce script hello.py est un simple script Python Le contenu de sortie de la première ligne du script "Content-type: text/html" est envoyé au navigateur. et indique au navigateur que le type de contenu affiché est "text/html" .

Utilisez print pour afficher une ligne vierge pour indiquer au serveur de terminer les informations d'en-tête.

En-tête HTTP

Le "Content-type: text/html" dans le contenu du fichier hello.py fait partie de l'en-tête HTTP, qui sera envoyé au navigateur pour indiquer au navigateur le fichier. Type de contenu.

Le format de l'en-tête HTTP est le suivant :

HTTP 字段名: 字段内容

Par exemple :

Content-type: text/html

Ce qui suit est un simple script CGI qui génère des variables d'environnement CGI :

#!/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>"

Méthodes GET et POST

Le client du navigateur transmet les informations au serveur via deux méthodes, ces deux méthodes sont la méthode GET et la méthode POST.

使用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错误

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn