一键登录 g_state cookie 在 http.cookies SimpleCookie 上不可解析

问题描述

我正在尝试在我们的网站上集成 Google One-Tap 登录。对于后端,我使用的是 Tornado 服务器,该服务器使用 http 库来解析 Cookie 标头并对其进行设置。有关 tornado cookie 处理 here 的更多信息。基本上,Google One-Tap 登录添加了这个 g_state cookie 来设置用户如何与 One-Tap 模式 (source) 交互的状态,这是我们无法在不改变功能的情况下改变的行为插件

现在出于某种原因,当我在 tornado 请求处理程序中调用 self.cookies 时,即使设置了 Cookie 标头,它也会返回空。 cookie 标头如下所示:

Cookie: g_state={"i_l":0}; token="abcde"

由于某种原因,它没有正确解析 cookie 标头。挖出一些代码来解析 tornado 使用的 cookie,并尝试了不同的方法来调查它:

>>> from http.cookies import SimpleCookie
>>> token = 'g_state={"i_l":0};token="abcde"'
>>> dd = SimpleCookie()
>>> dd.load(token)
>>> dd
<SimpleCookie: >

# Now try to rearranged the g_state to appear after token
>>> token2 = 'token="abcde";g_state={"i_l":0}'
>>> dd = SimpleCookie()
>>> dd.load(token2)
>>> dd
<SimpleCookie: token='abcde'>

# added sample token after it to check if it parses the cookies after g_state
>>> token2 = 'token="abcde";g_state={"i_l":0};other_token="hijkl"'
>>> dd = SimpleCookie()
>>> dd.load(token2)
>>> dd
<SimpleCookie: token='abcde'>

# without it
>>> token3 = 'token="abcde"'
>>> dd = SimpleCookie()
>>> dd.load(token3)
>>> dd
<SimpleCookie: token='abcde'>

所以其他 cookie 仍然会被解析,只要它在 g_state cookie 之前。之后的所有其他内容都无法解析。尝试查找此问题,似乎 http.cookies 库在解析大括号 cookie (source) 上存在问题。

有谁知道如何格式化客户端请求以防止发送 g_state 的 cookie 或至少找到一种方法来不影响它解析 Cookie 标头上的所有其他令牌?就像重新排列 g_state cookie 以始终结束?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...