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

如何在使用mod_python时读取python脚本中的cookie,python,cookies,mod-python,Python,Cookies,Mod Python,我有一个使用CGI用python编写的网站。这是伟大的,直到最近,当能力的规模变得重要 我决定使用mod_python,因为它非常简单。我的站点的大部分功能都存储在python模块中,我调用该模块来呈现各种页面。其中一个CGI脚本可能如下所示: #!/usr/bin/python import mysite mysite.init() mysite.foo_page() mysite.close() def get_username(): cookie = Cookie.Simp

我有一个使用CGI用python编写的网站。这是伟大的,直到最近,当能力的规模变得重要

我决定使用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)
在mysite,我可能会有这样的想法:

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

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


有什么想法吗?

您使用的是哪个版本的mod_python?mod_python 3.x包含了一个单独的
Cookie
类以简化此操作(请参阅)

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

req.headers\u在[“cookie”]——是的,就是这样。谢谢!