我们正在使用带有mod_python的Apache 2.4,它用于重写某些HTML输出的输出过滤器。我们目前正在JS中使用document.cookie设置cookie,但这不是最佳选择。我们理想的是喜欢通过标头设置cookie。我们尝试过使用filter.req.headers_out['SetCookie']
和Cookie.add_cookie
,但无济于事。
这甚至可能吗?如果没有,有什么更好的选择?我们坚持使用Apache 2.4和mod_python作为我们唯一的选择。
可用的Apache模块:
加载模块:
我目前如何设置cookie(在开发中):
def add_cookie(req, name, value, domain=None, expires=None):
"""Adds a cookie
Arguments:
req -- the request
name -- the cookie name
value -- the cookie value
domain -- (optional) the domain the cookie is applicable to
expires -- (optional) the time in minutes the cookie is set to expire, defaults to current session
"""
cookie = Cookie.Cookie(name, value)
# Always set the path to the root
cookie.path = '/'
# Set domain if present
if domain is not None:
cookie.domain = domain
# Set expires if present
if expires is not None:
expires = int(expires)
cookie.expires = time.time() + (60 * expires)
# Add a freshly-baked cookie
Cookie.add_cookie(req, cookie)
我自己想出来了。简短的版本是,是的,你可以。它以前不适合我的原因是我设置cookie的位置不正确。我从HTML处理区域(它不属于任何地方)移动了那一点,并直接将它放在outputfilter
方法中。
我希望这可以帮助别人。