使用mod_python时如何在python脚本中读取cookie

时间:2010-11-21 23:49:10

标签: python cookies mod-python

我有一个使用CGI在python中编写的网站。直到最近,当规模能力变得重要时,这才是很好的。

我决定使用mod_python,因为它非常简单。我的网站的大多数功能都存储在python模块中,我调用它来呈现各种页面。其中一个CGI脚本可能如下所示:

#!/usr/bin/python

import mysite

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

在mysite中,我可能会有这样的事情:

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.envrion的填充。因为我现在使用的是mod_python,所以解释器只加载一次这个模块,并且只填充一次。我无法读取cookie,因为它的os具有本地机器的环境变量,而不是远程用户。

我确信有办法解决这个问题,但我不确定它是什么。我尝试在get_username函数中重新导入os,但没有骰子:(。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您使用的是哪个版本的mod_python? Mod_python 3.x包含一个单独的Cookie类,以使其更容易(请参阅here

在早期版本IIRC中,您可以在请求对象的headers_in成员中获取传入的cookie。