python闲谈--CGI

CGI是外部应用程序(CGI程序)与WEB服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的过程。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。

绝大多数的CGI程序被用来解释处理来自表单的输入信息,并在服务器产生相应的处理,或将相应的信息反馈给浏览器。CGI程序使网页具有交互功能。

HTTP头部的格式如下:

HTTP 字段名: 字段内容

例如

Content-type: text/html\r\n\r\n

以下表格介绍了CGI程序中HTTP头部经常使用的信息:

描述
Content-type: 请求的与实体对应的MIME信息。例如: Content-type:text/html
Expires: Date 响应过期的日期和时间
Location: URL 用来重定向接收方到非请求URL的位置来完成请求或标识新的资源
Last-modified: Date 请求资源的最后修改时间
Content-length: N 请求的内容长度
Set-Cookie: String 设置Http Cookie

CGI环境变量

所有的CGI程序都接收以下的环境变量,这些变量在CGI程序中发挥了重要的作用:

变量名 描述
CONTENT_TYPE 这个环境变量的值指示所传递来的信息的MIME类型。目前,环境变量CONTENT_TYPE一般都是:application/x-www-form-urlencoded,他表示数据来自于HTML表单。
CONTENT_LENGTH 如果服务器与CGI程序信息的传递方式是POST,这个环境变量即使从标准输入STDIN中可以读到的有效数据的字节数。这个环境变量在读取所输入的数据时必须使用。
HTTP_COOKIE 客户机内的 COOKIE 内容。
HTTP_USER_AGENT 提供包含了版本数或其他专有数据的客户浏览器信息。
PATH_INFO 这个环境变量的值表示紧接在CGI程序名之后的其他路径信息。它常常作为CGI程序的参数出现。
QUERY_STRING 如果服务器与CGI程序信息的传递方式是GET,这个环境变量的值即使所传递的信息。这个信息经跟在CGI程序名的后面,两者中间用一个问号‘?‘分隔。
REMOTE_ADDR 这个环境变量的值是发送请求的客户机的IP地址,例如上面的192.168.1.67。这个值总是存在的。而且它是Web客户机需要提供给Web服务器的唯一标识,可以在CGI程序中用它来区分不同的Web客户机。
REMOTE_HOST 这个环境变量的值包含发送CGI请求的客户机的主机名。如果不支持你想查询,则无需定义此环境变量。
REQUEST_METHOD 提供脚本被调用的方法。对于使用 HTTP/1.0 协议的脚本,仅 GET 和 POST 有意义。
SCRIPT_FILENAME CGI脚本的完整路径
SCRIPT_NAME CGI脚本的的名称
SERVER_NAME 这是你的 WEB 服务器的主机名、别名或IP地址。
SERVER_SOFTWARE 这个环境变量的值包含了调用CGI程序的HTTP服务器的名称和版本号。例如,上面的值为Apache/2.2.14(Unix)

GET和POST方法

浏览器客户端通过两种方法向服务器传递信息,这两种方法就是 GET 方法和 POST 方法。

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的值(name不能使用";"和","号),有多个name值时用";"分隔例如:name1=name1;name2=name2;name3=name3。
  • expires=date: cookie的有效期限,格式: expires="Wdy,DD-Mon-YYYY HH:MM:SS"
  • path=path: 设置cookie支持的路径,如果path是一个路径,则cookie对这个目录下的所有文件及子目录生效,例如: path="/cgi-bin/",如果path是一个文件,则cookie指对这个文件生效,例如:path="/cgi-bin/cookie.cgi"。
  • domain=domain: 对cookie生效的域名,例如:domain="www.chinalb.com"
  • secure: 如果给出此标志,表示cookie只能通过SSL协议的https服务器来传递。

  cookie的接收是通过设置环境变量HTTP_COOKIE来实现的,CGI程序可以通过检索该变量获取cookie信息。

检索Cookie信息

Cookie信息检索页非常简单,Cookie信息存储在CGI的环境变量HTTP_COOKIE中,存储格式如下:

key1=value1;key2=value2;key3=value3....

时间: 2024-09-29 02:20:17

python闲谈--CGI的相关文章

Python实现CGI环境

要想安装Python的CGI环境,就继续往下看吧. 首先,要确定apache服务可以使用CGI服务. 打开apache的配置文件,设置如图. 在启动的apache服务的系统目录下,创建目录如/Users/iOSQiao/Sites/web/cgi-bin/,然后新建hello.py文件,如下 重启服务器后,打开浏览器,在地址栏输入 localhost/cgi-bin/hello.py 如果能够显示内容,则CGI环境配置完成. 如果遇到权限问题,记得把hello.py的文件权限改为755 chmo

Python ----脚本CGI、特点、应用、开发环境

CGI CGI 目前由NCSA维护,NCSA定义CGI如下: CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如:HTTP服务器,提供同客户端HTML页面的接口. CGI程序可以是Python脚本.Perl脚本.Shell脚本.C或者C++程序等. 服务器 在你进行CGI编程前,确保您的Web服务器支持CGI及已经配置了CGI的处理程序. 所有的HTTP服务器执行CGI程序都保存在一个预先配置的目录.这个目录被称为CGI目录,并按照惯例,它被

【python】CGI部署问题解决

1. 0x7f00报错 CGI脚本调用 No such file or directory 192.168.91.1 - - [20/Jun/2012 20:00:16] CGI script exit status 0x7f00 1.1 python环境变量声明 一般是环境变量设置 1.2 编辑器设置python换行风格 notepad++修改windows下python代码为linux风格 编辑 -> 档案格式转换 -> 下面有3种 另外,设置 -> 首选项 里面的新建可以设置默认格

Configure Tomcat 7 to run Python CGI scripts in windows(Win7系统配置tomcat服务器,使用python进行cgi编程)

Pre-installation requirements1. Java2. Python steps1. Download latest version of Tomcat (Tomcat 7) from    http://tomcat.apache.org/download-70.cgi2. After successful installation of tomcat modify the web.xml file in the  <TOMCAT_HOME>\conf\folder (

python之CGI

CGI:运行在服务器上的程序,提供同客户端HTML的接口.(common gateway interface 通用网关接口) CGI是不限定使用语言的. CGI工作原理: 首先浏览器访问URL并连接到服务器,web服务器接收到请求信息之后会解析URL,查找访问的文件是否存在于服务器上,如果存在则返回文件的内容,否则返回错误信息.浏览器从服务器上接受到信息,并显示接受的文件或者接收到的错误信息. 缺点:每次的CGI请求搜要生成一个程序的副本来了运行. 改进:FastCGI先编译.mod_perl将

python闲谈--闭包

闭包(closure)是函数式编程的重要的语法结构.函数式编程是一种编程范式 (而面向过程编程和面向对象编程也都是编程范式).在面向过程编程中,我们见到过函数(function):在面向对象编程中,我们见过对象(object).函数和对象的根本目的是以某种逻辑方式组织代码,并提高代码的可重复使用性(reusability).闭包也是一种组织代码的结构,它同样提高了代码的可重复使用性. python中的闭包从表现形式上定义(解释)为:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量

python闲谈--内置高级函数

1.map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. 假设用户输入的英文名字不规范,没有按照首字母大写,后续字母小写的规则,请利用map()函数,把一个list(包含若干不规范的英文名字)变成一个包含规范英文名字的list: # -*- coding:gbk -*-def format_name(s):    return s[0].upper() + s[1:].lower(

Python闲谈(二)聊聊最小二乘法以及leastsq函数

1 最小二乘法概述 自从开始做毕设以来,发现自己无时无刻不在接触最小二乘法.从求解线性透视图中的消失点,m元n次函数的拟合,包括后来学到的神经网络,其思想归根结底全都是最小二乘法. 1-1 “多线→一点”视角与“多点→一线”视角 最小二乘法非常简单,我把它分成两种视角描述: (1)已知多条近似交汇于同一个点的直线,想求解出一个近似交点:寻找到一个距离所有直线距离平方和最小的点,该点即最小二乘解: (2)已知多个近似分布于同一直线上的点,想拟合出一个直线方程:设该直线方程为y=kx+b,调整参数k

Python闲谈(一)

---恢复内容开始--- 最近在学计算机网络,就想着用python做做爬虫什么的,巩固下网络的知识.因为初学所以从入门开始! 初次上手python感觉它跟matlab很相似 (图1) 第一感觉它特别像一个计算器(函数式编程) 然后慢慢接触发现它的数据类型跟一般的面向对象化编程语言很类似,如整数.浮点数.列表.字典等等. 让我最感觉最大的不同就是它的不可变类型与可变类型 (图2) 上图可以很清楚的看出,x与y本来是指向同一个地址的,然后改变y的值后y的地址就改变了,而x的地址却还是没有变化并且x的