python - 解码 Django session cookie 值

标签 python django cookies

我正在通过 JavaScript 设置 session cookie,如下所示:

$('.content li a').on('click', function(e) {
        $.cookie.json = true;
        var cookie_value = {postid: 1234, commentid: 8999};
        $.cookie('my_cookie_key', cookie_value, {path: '/'});
    });

当我尝试在 Python Django 中检索 cookie 值时,我得到一个编码字符串,如下所示: '"%7B%22postid%22%3A1234%2C%22commentid%22%3A8999%7D"'

使用 request.COOKIES.get('my_cookie_key')

我怎样才能把它变成一个 dict 对象,这样我就可以轻松地检索 cookie 中的所有值,比如 my_cookie_obj.postid?我已经尝试解码字符串,但我认为我做的不对。

最佳答案

该值只是百分比编码。只需使用适当的解码功能,unquote来自 urllib.parse(urlparse.unquote/urllib.unquote for Python 2 in the original answer),你应该取回最初存储的内容。

>>> import json
>>> from urllib.parse import unquote
>>> s = unquote("%7B%22postid%22%3A1234%2C%22commentid%22%3A8999%7D")
>>> s
'{"postid":1234,"commentid":8999}'
>>> v = json.loads(s)
>>> v['commentid']
8999

请注意,用户可以操纵所有 cookie 值,因此在解析/使用这些值时要小心,因为它们是不受信任的内容。

关于python - 解码 Django session cookie 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22367364/

相关文章:

php - ZF2 读取 HTTP Cookie

python - 二维图像的轮廓

python - 如何使用 [] 为新类定义选择?

python - 在 kivy 中,如何控制 TextInput 使用的 VKeyboard 的高度

django - 将相关项的逗号分隔列表注释到 Django 查询集

python - 模板语法错误

python -/usr/bin/python3 : No module named pytest

python - Django 多语言网站

cookies - jMeter Cookie 管理器不存储所有 cookie

php - 检查安全 cookie 并在 HTTPS 模式内重定向非 HTTPS 父级