首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

18.4  取得环境信息

某些CGI规格说明书会调用Web服务器来得到一些关于session的环境变量。cgi模块会把这些信息作为它处理的一部分。但是,您会经常想直接取得某些环境变量,例如URL或路径信息。

cgi模块提供几个便捷的函数来帮助我们得到环境变量。下面的程序就使用其中的一个函数,这个函数产生的HTML代码表示传给CGI脚本的环境变量。

#!/usr/bin/env python

# CGI Environment - Chapter 18 - environ.cgi

import cgitb

cgitb.enable()

import cgi

print "Content-type: text/html"

print

print """<HTML>

<HEAD>

<TITLE>CGI Environment</TITLE>

</HEAD>

<BODY>"""

cgi.print_environ()

print "</BODY></HTML>"

在我的系统上,我把这个程序命名为environ.cgi,并放在服务器的cgi-bin目录下。当我访问http://localhost:8765/cgi-bin/environ.cgi/foo的时候,我看到:

Shell Environment:

    GATEWAY_INTERFACE

        CGI/1.1

    HTTP_ACCEPT

        */*

HTTP_USER_AGENT

Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6)

Gecko/20040506 Firefox/0.8

    PATH_INFO

        /foo

    PATH_TRANSLATED

        /tmp/htdocs/chapters/19/foo

    REMOTE_ADDR

        127.0.0.1

    REMOTE_HOST

        localhost

    REQUEST_METHOD

        GET

    SCRIPT_NAME

        /cgi-bin/environ.cgi

    SERVER_NAME

        localhost

    SERVER_PORT

        8765

    SERVER_PROTOCOL

        HTTP/1.0

   

    SERVER_SOFTWARE

        SimpleHTTP/0.6 Python/2.3.3

让我来再介绍几个更加有趣的环境变量:

l REMOTE_ADDR。包含远程客户端的IP地址。

l PATH_INFO。包含跟随CGI脚本的URL的成分。

l REMOTE_HOST。有时包含远程Web客户端主机名,但是很多Web服务器要么不设置这个,要么设置和REMOTE_ADDR一样的值。

l  SERVER_NAME。包含本地Web服务器的名称。

l SERVER_PORT。包含本地Web服务器可以接收请求的端口号。

这些都可以通过os.environ得到。例如,os.environ['REMOTE_ADDR']包含客户端的IP地址。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论