我在我的Flask应用程序中发现了一个非常奇怪的问题。我发现在某些情况下,可以用相同的名字创建多个会话cookie。我附上了一张关于它的图片。这不是浏览器特有的问题。
这本身就很奇怪,但真正的问题是当我试图用以下方法验证一个表单时。CSRF 令牌。不幸的是,Flask选择了一个错误的会话cookie,CSRF标记的验证无法成功。更奇怪的是,即使在多次提交表单后,问题依然存在。唯一的解决方法是删除 cookie,这对普通用户来说不是一个选项。
有没有什么选项可以防止Flask创建同名的cookies? 或者至少有一个选项可以从我的应用程序中获取所有cookie名称?在这种情况下,至少我可以删除同名的会话cookie。
在没有代码的情况下,很难判断Flask在哪里生成多个同名cookie,但有可能是你让cookie存活的时间太长了,请参见 Flask:如何删除cookies? 来处理这个问题。
如果我没理解错的话,另一个主要问题是【我的评论】。
Flask选择了一个错误的会话cookie[多个同名cookie中的一个]。
从多个同名的cookie中挑错不是Flask特有的,而是关于客户端浏览器使用的逻辑,见例如。如何处理多个同名的cookie?