Python CGI编程
CGI(Common Gateway Interface)通用网关接口,它是一段程序,运行在服务器上。如:HTTP服务器,提供同客户端HTML页面的接口。
CGI程序可以是python脚本,PERL脚本,shell脚本,c或者c++程序等。
web服务器支持及配置
apache支持CGI配置:一般CGI目录为:/var/www/cgi-bin/
CGI文件的扩展名为.cgi,python也可以使用.py扩展名。
默认情况下,Linux操作系统配置运行的cgi-bin目录中为/var/www.如果要自定义,可以在http.conf配置文件中修改。
在/var/www/cgi-bin目录下创建第一个cgi程序,文件名为hello.py

在浏览器中访问显示结果如下:

注:用print输出一个空行用于告诉服务器结束头部信息。
一、HTTP头部
HTTP头部格式如下:
HTTP 字段名:字段内容
例如:Content-type:text/html (告诉浏览器文件的内容类型)
CGI程序中HTTP头部经常使用的信息

二、GET和POST方法
浏览器客户端通过这两种方法向服务器传递信息。
1. 使用GET方法传输数据
GET方法发送编码后的用户信息到服务端,数据信息包含在请求页面的URL上,以“?”分割。
如:http://192.168.112.128/cgi-bin/hello.py?key1=value1&key2=value2
GET请求:可被缓存,可以保留在浏览器历史纪录中,可被收藏为书签,不应在处理敏感数据时使用,请求长度有限制,只应当用于取回数据。
简单的URL实例:GET方法
使用GET方法向hello_get.py程序发送两个参数
实例一: /cgi-bin/hello_get.py?name=菜鸟教程&url=http://www.runoob.com

浏览器测试结果:

实例二:通过html的表单使用GET方法向服务器发送两个数据
在html文件夹下创建一个html文件,文件内容如下;

浏览器演示结果如下:

输入文字后,点击提交,结果如下

2.使用post方法传递数据
使用post方法向服务器传递数据是最安全可靠的,像一些敏感信息,如用户密码等都需要使用post传输数据
实例一:通过CGI程序传递checkbox数据
checkbox用于提交一个或者多个选项的数据
html 代码如下:

checkbox.py文件代码如下

浏览器访问结果:


实例二: 通过CGI程序传递Radio数据
Radio只向服务器传递一个数据
HTML代码如下:

radiobutton.py文件内容如下:

浏览器访问结果如下


实例三:通过CGI程序传递Textarea数据
Textarea向服务器传递多行数据。HTML代码如下:

加载的textarea.py文件的内容如下:

浏览器访问的结果如下:


实例四: 通过CGI程序传递下拉数据
HTML下拉框代码如下:

dropdown.py脚本代码如下:

浏览器访问结果:



实例五:CGI中使用Cookie
http协议一个很大的缺点就是不对用户身份进行判断,这样给程序员带来很大的不便,而Cookie功能的出现弥补了这个不足。cookie在客户访问脚本的同时,通过客户的浏览器,在客户硬盘上写入记录数据,当下次客户访问脚本时取回数据信息,从而达到身份判别的功能,cookie常用在身份校验中。
cookie的语法
http cookie的发送是通过http头部实现的,早于文件的传递,头部set-cookie的语法如下:
set-cookie:name=name;expires=date;path=path;domain=domain;secure
name=name:需要设置cookie的值
expires=date:cookie的有效期限,格式:expirse=“Why,DD-Mon-YYYY HH:MM:SS"
path=path:设置cookie支持的路径。
domain=domain:对cookie生效的域名
secure:如果给出此标志,表示cookie只能通过SSL协议的https服务器来传递。
cookie的接收是通过设置环境变量HTTP_COOKIE来实现的,CGI程序可以通过检索该变量获取cookie信息。
Cookie的设置会在http头部单独发送。
1. Cookie设置:在cookie中设置了name和expirse

浏览器访问结果如下:

2: 检索cookie信息
cookie信息存储在CGI环境变量HTTP_COOKIE中,存储格式如下:
key1=value1;key2=values; key3=value3...

浏览器访问结果

实例六:文件上传
HTML设置上传文件的表单需要设置enctype属性为multipart/form-data

save_file.py脚本内容如下:

浏览器访问结果:


查看上传成功的文件

实例七:文件下载
文件下载通过设置HTTP头部信息来实现
在当前目录下创建文件foo.txt,用于程序下载

浏览器访问结果

Python CGI编程的更多相关文章
- Python CGI编程(转自易百)
Python CGI编程 Python的CGI编程,公共网关接口或CGI,Web服务器和一个自定义的脚本之间交换信息是一组定义的标准. 什么是CGI ? 公共网关接口或CGI,Web服务器和一 ...
- python CGI编程-----简单的本地使用(1)
本章节需要安装python开发工具,window平台安装地址:https://www.python.org/downloads/windows/,linux安装地址:https://www.pytho ...
- 转:python cgi编程
转:http://www.runoob.com/Python/python-cgi.html 什么是CGI CGI 目前由NCSA维护,NCSA定义CGI如下: CGI(Common Gateway ...
- 吴裕雄--天生自然python学习笔记:Python CGI编程
什么是CGI CGI 目前由NCSA维护,NCSA定义CGI如下: CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如:HTTP服务器,提供同客户 ...
- python CGI 编程实践
文章更新于:2020-03-05 注1:安装 python 参见: python 的安装使用和基本语法 注2:配置 web 环境参见: Windows&linux使用集成环境搭建 web 服务 ...
- Python CGI编程和CGIHTTPServer
Python2.7 的CGIHTTPServer 可以作为一个简单的HTTP服务器,能够调用cgi脚本 1 在任意目录下创建一个特殊的目录 cgi-bin ,用于存放自己写的脚本(.py或.cgi) ...
- python CGI编程Apache配置
1. 编辑http.conf,添加两行,路径可以自定义 <Directory "C:/AppServ/www/cgi-bin"> AllowOverride None ...
- Common Gateway Interface Python CGI编程
https://en.wikipedia.org/wiki/Gateway_(telecommunications) In telecommunications, the term gateway r ...
- 彻底解决python cgi 编程出现的编码问题
Answering this for late-comers because I don't think that the posted answers get to the root of the ...
随机推荐
- vim YouCompleteMe 遇到的问题及解决
问题1: 补充,升级gcc,g++ 到4.7以上的版本才能安装成功 github 官网 github https://github.com/Valloric/YouCompleteMe#ubuntu- ...
- LeetCode【104. 二叉树的最大深度】
最开始的想法就是递归,但是,自己想的太麻烦,每个节点与null相比较,如果都不为null,count就加一,然后输出count, 其实,这中间有很多错误,然后,就想着想着就绕不出来了.然后,重新思考了 ...
- MySQL binlog2sql-闪回数据
binlog2sql 从MySQL binlog解析出你要的SQL.根据不同选项,你可以得到原始SQL.回滚SQL.去除主键的INSERT SQL等. 用途 数据快速回滚(闪回) 主从切换后新mast ...
- spring boot websocket stomp 实现广播通信和一对一通信聊天
一.前言 玩.net的时候,在asp.net下有一个叫 SignalR 的框架,可以在ASP .NET的Web项目中实现实时通信.刚接触java寻找相关替代品,发现 java 体系中有一套基于stom ...
- java.lang.Long 类源码解读
总体阅读了Long的源码,基本跟Integer类类似,所以特别全部贴出源码,直接注释进行理解. // final修饰符 public final class Long extends Number i ...
- 记录一次 “ORA-12516:TNS:监听程序找不到符合协议堆栈要求的可用处理程序” 的处理过程
一.今天同事反馈业务化运行的数据中心库发生了oracle无法连接的情况,导致所有业务系统无法正常运作的问题.报:“ORA-12516:TNS:监听程序找不到符合协议堆栈要求的可用处理程序” 二.收到这 ...
- VMware12 安装 Mac OS 10.12 步骤及设置优化教程
最近公司要开发苹果的ARKit应用,但是项目组穷啊,只有美工用着一台苹果本本,所以肯定不能老用他的电脑,效率低还老打扰他.所以我就想着用虚拟机整,毕竟玩了N年的虚拟机了,应该是没啥问题的.所以就开始各 ...
- java+Selenium+TestNg搭建自动化测试架构(2)实现跨浏览器功能
1.切换浏览器类:其中包含了切换浏览器的方法,以及关闭浏览器,设置等待时间,以及重写的断言方法 package com.rrx.framework; import java.io.IOExceptio ...
- 编译pcre 报错 error: Invalid C++ compiler or C++ compiler flags
安装c++ 编译器:yum -y install gcc-c++ ,再次编译通过.
- SecureCR 控制台输出行数设置
1.Options –>Session Options–>Terminal–>Emulation 2.在Scrollback输入你需要的最大显示行数,最大行数是128000,修改完全 ...