【问题标题】:How to read cookies in a python script when using mod_python使用 mod_python 时如何在 python 脚本中读取 cookie
【发布时间】:2010-11-22 07:59:41
【问题描述】:

我有一个使用 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.envrion 在将 os 导入脚本(在模块顶部)时填充。因为我现在使用 mod_python,解释器只加载这个模块一次,并且只填充一次。我无法读取cookie,因为它的操作系统具有本地机器的环境变量,而不是远程用户。

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

有什么想法吗?

【问题讨论】:

    标签: python cookies mod-python


    【解决方案1】:

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

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

    【讨论】:

    • req.headers_in["cookie"] -- 是的,就是这样。谢谢!
    猜你喜欢
    • 2012-07-05
    • 2012-04-24
    • 1970-01-01
    • 2019-06-29
    • 2011-02-03
    • 1970-01-01
    • 2012-03-31
    • 2011-01-10
    • 2021-10-24
    相关资源
    最近更新 更多