文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 国产软件 | 国外软件 | 汉化补丁 | 设为首页 | 加入收藏
业界资讯 | 图形图像 | 操作系统 | 网络冲浪 | 工具软件 | 办公软件 | 媒体动画 | 精文荟萃 | 认证考试 | 网站建设 | 技术开发 | 专栏
当前位置:abcdown网络学院网络编程CGI/PerlCGI教程(10)CGI 规范
精品广告
推荐TOP10
·在CGI中如何使用cookie的方法
·CGI脚本在WIN2000、WINNT下安装
阅读TOP10
·Linux系统环境下的Socket编程详细解析
·CGI 安全问题
·用机器生成的音乐监控Linux 计算机
·Perl教学 目录
·Perl教学 第一篇 概述
·Perl教学 第二篇 简单变量
·Perl教学 第三篇 操作符
·Perl教学 第四篇 列表和数组变量
·Perl教学 第五篇 文件读写
·Perl教学 第六篇 模式匹配

CGI教程(10)CGI 规范

日期:2007年5月10日 作者: 查看:[大字体 中字体 小字体]


CGI 规范

  本节教程是CGI/1.1的规范,更高版本的协议是向下兼容的,也就是说CGI/1.1的规范同样使用于更高版本的规范。

  服务器于CGI脚本有四种主要的方法进行通讯:环境变量、命令行、标准输入和标准输出。

CGI环境变量的规范

  为了传递关于从服务器到脚本的信息请求的数据,服务器使用了命令行参数比如环境变量。这些变量是在当服务器执行网关程序时被设置的。

下面的环境变量不是特殊请求而是为请求的设置

SERVER_SOFTWARE :相应请求的信息服务软件的名字和版本,其格式为name/version ;

SERVER_NAME :服务器的主机名或者IP地址。

GATEWAY_INTERFACE :服务器遵从的CGI规范的修订版。格式为:CGI/revision

CGI 规范

以下的环境变量是由网关程序实行的请求规范:

SERVER_PROTOCOL :信息协议的名字和修订版。格式为protocol/revision 。

SERVER_PORT :发送请求的端口号。

REQUEST_METHOD :请求的方法。对于HTTP,有"GET"、 "HEAD"、 "POST"等等。

PATH_INFO :额外的路径信息,由客户端给出的。换句话说,脚本可以由他们的虚拟路径名来访问,在这个路径的末尾附带额外的信息。这个额外信息被作为PAHT_INFO发送。这个信息如果在传递给CGI脚本之前来自URL就可以由服务器来解码。

PATH_TRANSLATED :服务器提供了一个PAHT_INFO的转换版本,它需要路径并且为它做虚拟到物理的映射。

SCRIPT_NAME :将要执行的脚本的一个虚拟路径。

QUERY_STRING :在引用脚本的URL中紧跟在?之后的信息。这是一个查询信息。它不能以任何方式来解码。这个变量总是可以在有查询信息的时候被设置,而不管命令行解码。

REMOTE_HOST :产生请求的主机名。如果服务器没有这个信息,它应该设置REMOTE_ADDR 并且让这个为未设置状态。

REMOTE_ADDR :产生请求的远程主机的IP地址。

AUTH_TYPE :如果服务器支持用户验证,脚本就受保护。这是一个协议规范授权方法,用于验证用户。

REMOTE_USER :如果服务器支持用户验证,脚本就受保护。这是他们授权的用户名。

REMOTE_IDENT :如果HTTP服务器支持RFC931认证,这个变量将被设置为从服务器取出的远程用户名。这个变量的用法应该只限制在登陆的时候。

CONTENT_TYPE :对于哪些已经附上信息的请求,比如 HTTP POST和PUT,这是数据的内容类型。

CONTENT_LENGTH :客户端给的数据内容的长度。

  另外,来自客户端的文件头的几行被放置到环境中,它是前HTTP紧跟着文件头名字。头名字中的任何字符在前面都被加上了_字符。服务器可能会排除任何的已经被它处理的文件头,比如授权、内容类型和内容长度等等。如果需要的话,如果文件头的长度超过了系统环境的藓,服务器可以选择用来排除他们。

CGI 规范

CGI命令行选项规范

  命令行只用在ISINDEX查询的情况。它不使用在HTML表单或者任何没定义的查询类型中。服务器应该为一个没有编码的=字符搜索信息来决定是否命令行被使用了,如果它发现了,命令行就不使用。这个就委托客户端在ISINDEX查询中编码等于号,这个被认为是安全的。

下面举个例子,使用网络命令和ISINDEX界面来观察"httpd"。你将会看到脚本会自动利用/cgi-bin/finger?httpd来调用它本身并且将会在命令行执行"finger httpd" ,还会为你输出结果。

如果服务器没有在QUERY_STRING找到"=" ,那么命令行不会被使用,任何的解码也没有被执行。这个查询利用适当的FORM提交解码器来维持于处理的联系。同时,作为一个例子,可以为提交"httpd=name"使用超级连接到网络指令脚本。因为QUERY_STRING包含了一个未编码的"=",所以没有被解码,这个脚本不知道它提交了一个有效的查询,而只是给你一个缺省的网络指令表单。

[1] [2] 下一页 

上一篇:CGI教程(11)错误脚本

下一篇:CGI教程(9)编写安全的CGI脚本


相关软件: 相关文章:
·CGI教程(10)CGI 规范
·CGI教程(10)CGI 规范之一
·CGI教程(10)CGI 规范之二
·CGI教程(10)CGI 规范之三
·CGI教程(10)CGI 规范之四
·CGI教程(10)CGI 规范之五

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.abcdown.net
首页 | 本站声明 | 下载帮助 | 发布软件 |
中文版权所有:ABC学院 浙ICP备05000717号