CGI 接口大家都很熟悉,web开发的书籍都有所提及,但是它的标准说明,大家可能没有看过,现总结如下:
RFC?
http://tools.ietf.org/html/rfc3875
CGI是什么?
为动态web内容页提供一套标准的方法,主要是为不同动态页面处理语言在不同的web服务器下提供一致的接口规范。比如语言有php ruby python等,web服务器有apache、nginx、lighthttp等。其中需要规范的接口包括会话环境变量,会话客户端信息。
CGI历史?
1993年美国国家计算机中心起草制定一份CGI的说明,1997年Ken Coar领导的团队制定了CGI1.1规范,并提交RFC。
详情?
SERVER_PROTOCOL :信息协议的名字和修订版。格式为protocol/reVision 。
SERVER_PORT :发送请求的端口号。
REQUEST_METHOD :请求的方法。对于HTTP,有"GET"、 "HEAD"、 "POST"等等。
PATH_INFO :额外的路径信息,由客户端给出的。换句话说,脚本可以由他们的虚拟路径名来访问,在这个路径的末尾附带额外的信息。这个额外信息被作为PATH_INFO发送。这个信息如果在传递给CGI脚本之前来自URL就可以由服务器来解码。
如果请求http://example.com/test/test.php/a/b?k=v,则PATH_INFO
的值为/a/b。
PATH_TRANSLATED :服务器提供了一个PATH_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 :客户端给的数据内容的长度。
都有例外
各个web服务器、语言也都有自己独特的实现,比如
REQUEST_URI:包含HTTP协议中定义的URI内容。如果请求http://example.com/test/test.php?k=v,则REQUEST_URI 为/test/test.php?k=v