在使用mod_python时如何在Python脚本中读取Cookies

0 投票
1 回答
510 浏览
提问于 2025-04-16 07:25

我有一个用Python写的网站,最开始是用CGI技术做的。这个方法在之前很不错,但最近我发现需要扩展网站的功能了。

于是我决定使用mod_python,因为它比较简单。我的网站大部分功能都放在一个Python模块里,我通过这个模块来渲染不同的页面。比如,一个CGI脚本可能长这样:

#!/usr/bin/python

import mysite

mysite.init()
mysite.foo_page()
mysite.close()

在我的网站里,我可能会有这样的代码:

def get_username():
     cookie = Cookie.SimpleCookie(os.environ.get("HTTP_COOKIE",""))
     sessionid = cookie['sessionid'].value
     ip = os.environ['REMOTE_ADDR']
     username = select username from sessions where ip = %foo and session = %bar
     return(username)

用来获取当前用户的用户名。问题是,这个过程依赖于在脚本顶部导入os模块时,os.environ能够被填充。因为我现在使用mod_python,解释器只会加载这个模块一次,也只会填充一次环境变量。我无法读取用户的cookies,因为os模块获取的是本地机器的环境变量,而不是远程用户的。

我相信有办法解决这个问题,但我不太确定是什么。我尝试在get_username函数里重新导入os模块,但没有成功 :(。

有什么想法吗?

1 个回答

0

你在用哪个版本的mod_python呢?mod_python 3.x版本里有一个单独的Cookie类,可以让处理cookies变得更简单(详细信息可以查看这里)。

在早期的版本中,如果我没记错的话,你可以通过请求对象里的headers_in成员来获取传入的cookies。

撰写回答