首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在http.cookies SimpleCookie上无法解析一键登录g_state cookie

问在http.cookies SimpleCookie上无法解析一键登录g_state cookie
EN

Stack Overflow用户
提问于 2021-03-30 12:21:45
回答 1查看 253关注 0票数 1

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

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

代码语言:javascript
复制
Cookie: g_state={"i_l":0}; token="abcde"

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

代码语言:javascript
复制
>>> 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'>

因此,只要在g_state cookie之前,其他cookie仍然会被解析。之后的所有内容都是不可解析的。我试着查找这个问题,似乎在解析花括号cookies (source)的http.cookies库上有一个问题。

有人知道如何格式化客户端请求以防止发送g_state的cookie,或者至少找到一种方法在解析Cookie标头上的所有其他令牌时不影响它吗?比如重新排列g_state曲奇,使其始终放在末尾?

EN

回答 1

Stack Overflow用户

发布于 2021-09-25 08:50:03

一个对我有效的变通方法: Javascript删除所有html页面上的g_state cookie。

代码语言:javascript
复制
<script>document.cookie = "g_state=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";</script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66864766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档