在使用mod_python时如何在Python脚本中读取Cookies
我有一个用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。