【转】CGI环境变量荟萃【1】

程序&源码 CN-P5 1813℃ 0评论

一、第一个收集

Perl CGI 环境变量会因为服务器的不同而有所区别。所以本内容不一定和你的WEB 服务器相完全符合。

以下的内容以字母排序:

1. AUTH_TYPE

  如果服务器支持基本的认证并且如果脚本被保护,此变量提供认证类型,此信息是特定于协议和服务器的。

2. CONTENT_LENGTH

  如果通过 POST 方法的请求中包括数据,此变量的值为此请求中合法数据的长度。

3. CONTENT_TYPE

  如果请求中包括数据,此变量指定数据类型的类别。

4. DOCUMENT_ROOT

  网络提供的文件服务所在的路径。

5. GATEWAY_INTERFACE

  被服务器支持的 CGI 接口的版本数,其格式为 CGI/版本号。

6. HTTP_ACCEPT

  提供由逗号分开的并被客户服务器可接受的 MIME 类型的列表。

7. HTTP_ACCEPT_CHARSET

  客户机能接受的语言代码设置。

8. HTTP_ACCEPT_ENCODING

  客户机能接受的编码形式。

9. HTTP_ACCEPT_LANGUAGE

  客户机能接受的语言类型。

10. HTTP_COOKIE

  客户机内的 COOKIE 内容。

11. HTTP_FORM

  使用者发出请求的电子邮件讯息。

12. HTTP_REFERER

  在读取 CGI 程式前,客户端所指的 URL。

13. HTTP_USER_AGENT

  提供包含了版本数或其他专有数据的客户浏览器信息。

14. PATH_INFO

  显示由客户提供并附在虚拟路径尾的任何附加的路径信息。它通常被用作脚本的参数。

15. PATH_TRANSLATED

  仅由部分服务器支持,此变量包含由虚拟路径到被执行脚本的转换(即虚拟路径到物理路径的映射)。例如,如果到你的
WEB 服务器根的绝对路径为 /apache/httpd/htdocs,一个具有
URL http://www.CGIer.net/cgi-bin/test.cgi 的脚本会将变量
PATH_TRANSLATED 设置为/apache/httpd/htdocs/cgi-bin/test.cgi。

16. QUERY_STRING

  显示由客户提供的附在URL尾并用一个问号与脚本名分开的任何附加信息。

17. REMOTE_ADDR

  提供发请求客户的 IP 地址。

18. REMOTE_HOST

  提供已分解的发请求客户的主机名。

19. REMOTE_IDENT

  如果服务器和客户支持 RFC931,此变量将包含由远程用户的计算机提供的识别信息。

20. REMOTE_USER

  如果AUTH_TYPE被设置,此变量将包含用户提供并由服务器确认的用户名。

21. REQUEST_METHOD

  提供脚本被调用的方法。对于使用 HTTP/1.0 协议的脚本,仅
GET 和 POST 有意义。

22. SERVER_ADMIN

  显示服务器网络管理员。

23. SCRIPT_NAME

  这是被调用脚本文件的名字,它对于自引用脚本很有用。

24. SERVER_NAME

  这是你的 WEB 服务器的主机名、别名或IP地址。

25. SERVER_PORT

  这是你的 WEB 服务器的端口号。

26. SERVER_PORT_SECURE

  接受Http请求的服务器安全、加密端口。

27. SERVER_PROTOCOL

  这是本请求所用协议的名字/版本。

28. SERVER_S0FTWARE

  这是运行脚本的 HTTP 服务器的名字/版本。

二、第二个收集

1、环境变量
服务器与CGI程序交换信息的协作方式是通过环境变量实现的。无论什么请求,CGI程序总能在特定位置找到某些信息。无论环境变量怎样定义,总有一些变量有着特定含义。
环境变量是一写保存用户信息的内存区。例如,所有的机器都有一个PATH环境变量,当在当前目录找布道文件时就要查找PATH变量。当服务器收到一个请求后,它首先要收集它能得到的所有相关信息,并把它放入内存。那么,服务器要收集什么信息呢?

关于服务器自身的详细信息
关于用户的信息信息
关于用户请求的信息

服务器不知道CGI程序到底需要那些信息,所以它把这些信息一起收集,那么如果有什么重要的东西就不会遗漏了。
为了向你展示服务器收集那些环境变量,在上一期的教程里我已经为各位写了一个程序,该程序将几乎所有的信息都反映在了浏览器里。所以在进一步学习变量的时候,请首先把程序调试好。

2、环境变量
2.1、与服务器相关的环境变量

GATEWAY_INTERFACE 服务器遵守的CGI版本
SERVER_NAME 服务器的IP或名字
SERVER_PORT 主机的端口号
SERVER_SOFTWARE 服务器软件的名字

2.2、与客户机相关的环境变量

服务器了解你的CGI程序,但它一定不知道你的客户机环境。正因为如此,同客户机有关的变量才是最重要的。因为它涉及到你的浏览器等等。
ACCEPT 例出能被次请求接受的应答方式
ACCEPT_ENCODING 列出客户机支持的编码方式
ACCEPT_LANGUAGE 表明客户机可接受语言的ISO代码
AUTORIZATION 表明被证实了的用户
FORM 列出客户机的EMAIL地址
IF_MODIFIED_SINGCE 当用get方式请求并且只有当文档比指定日期更早时才返回数据
PRAGMA 设定将来要用到的服务器代理
REFFERER 指出连接到当前文档的文档的URL
USER_AGENT 标明客户使用的软件

2.3、与请求相关的环境变量

每次服务器受到的请求都不可能是一样的。这意味着有许多CGI程序必须注意的信息。这些与请求相关的信息包含有用户调用的信息,用户如何发送请求,以及作为请求的一部分传送了多少(什么)信息。这些对你的程序来说是非常重要的,因此我们将化些时间详细地讨论一下其中的一些变量。特别是下面写出的三个变量。这三个变量相当重要。
REQUEST_METHOD
QUERY_STRING
CONTENT_LENGTH
你必须熟悉这三个变量,因为它们用来表示数据是如何送到CGI程序的;然后你所要要做的事情就是在这三个变量里取出数据,进行下一步的编程。其他的一些变量的用处很多,你可以了解你的竞争对手正在调用你的程序,你可以辨别用户是否注册,或者你可以设置连接到你的CGI程序以便要求附加路径信息包含在请求之中—-因此你不必猜测你的用户正在你的服务器的哪个页面上。
AUTH_TYPE 服务器用的确认模式
CONTENT_FILE 含有CGI程序的数据文件
CONTENT_LENGTH POST请求中向标准输入(STDIN)发送的字节数
CONTENT_TYPE 被发送数据的类型
PATH_INFO CGI程序的附加路径
PATH_TRANSLATED PATH_INFO对应的绝对路径
QUERY_STRING 传送给CGI程序的URL的问号(?)之后的那一部分
REMOTE_ADDR 最终用户的IP或主机名
REMOTE_USER 如果用户合法,则是用户的组名
REQUEST_LINE 发送给服务器的完整URL请求
REQUEST_METHOD 作为HTTP的一部分请求而传送数据的方法,比如get。
SCRPT_NAME 运行的脚本名字

三、第三个收集

环境变量 说明 QUERY_STRING 传递给程式的 query 资讯 REMOTE_HOST 使用者发出 request 的远端 host 名称
REMOTE_ADDR 使用者发出 request 的远端 IP 位址 AUTH_TYPE 用来确定使用者合法性的监定方法 REMOTE_USER 使用者的合法名称 REMOTE_IDENT 发出 request 的使用者 CONTENT_TYPE query 资料中的 MIME 型别 CONTENT_LENGTH 资料长度,以 byte 或字元数来计算 HTTP_FORM 使用者发出 request 的电子邮件讯息 HTTP_ACCEPT client 可以接受的 MIME 型别列表 HTTP_USER_AGENT client 用来发出 request 的浏灠器 GATEWAY_INTERFACE Server 使用的 CGI 版本 SERVER_NAME Server 的 host 名称或 IP 位址 SERVER_SOFTWARE 回应 client request 的 Server 软体名称和版本 SERVER_PROTOCOL 传递资讯所用的协定名称或版本 SERVER_PORT Server 正在执行的 port number REQUEST_METHOD 发出 request 的方法 PATH_INFO 传递给 CGI 程式的额外路径 PATH_TRANSLATED 存在 PATH_INFO 中的给定路径的传递版本 SCRIPT_NAME 程式执行时的 virtual path DOCUMENT_ROOT 网路提供的文件服务所在路径 HTTP_REFERER 在读取 CGI 程式前,client 所指的文件 URL

四、第四个收集

环境变量 意义 SERVER_NAME CGI脚本运行时的主机名和IP地址. SERVER_SOFTWARE 你的服务器的类型如: CERN/3.0 或 NCSA/1.3. GATEWAY_INTERFACE 运行的CGI版本. 对于UNIX服务器, 这是CGI/1.1. SERVER_PROTOCOL 服务器运行的HTTP协议. 这里当是HTTP/1.0. SERVER_PORT 服务器运行的TCP口,通常Web服务器是80. REQUEST_METHOD POST 或 GET, 取决于你的表单是怎样递交的. HTTP_ACCEPT 浏览器能直接接收的Content-types, 可以有HTTP Accept header定义. HTTP_USER_AGENT 递交表单的浏览器的名称、版本 和其他平台性的附加信息。 HTTP_REFERER 递交表单的文本的 URL,不是所有的浏览器都发出这个信息,不要依赖它 PATH_INFO 附加的路径信息, 由浏览器通过GET方法发出. PATH_TRANSLATED 在PATH_INFO中系统规定的路径信息. SCRIPT_NAME 指向这个CGI脚本的路径, 是在URL中显示的(如, /cgi-bin/thescript). QUERY_STRING 脚本参数或者表单输入项(如果是用GET递交). QUERY_STRING 包含URL中问号后面的参数. REMOTE_HOST 递交脚本的主机名,这个值不能被设置. REMOTE_ADDR 递交脚本的主机IP地址. REMOTE_USER 递交脚本的用户名. 如果服务器的authentication被激活,这个值可以设置。 REMOTE_IDENT 如果Web服务器是在ident (一种确认用户连接你的协议)运行, 递交表单的系统也在运行ident, 这个变量就含有ident返回值. CONTENT_TYPE 如果表单是用POST递交, 这个值将是 application/x-www-form-urlencoded. 在上载文件的表单中, content-type 是个 multipart/form-data. CONTENT_LENGTH 对于用POST递交的表单, 标准输入口的字节数.

转载请注明:黑白的自留地 » 【转】CGI环境变量荟萃【1】

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址