如何解决一键登录 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 举报,一经查实,本站将立刻删除。