Flask 会话 Cookie 几乎立即过期,无法设置 Samesite 属性

问题描述 投票:0回答:2

我正在制作一个带有会话cookie登录系统的网络应用程序。当使用 cookie 时,它们会在几秒钟内过期,从而使用户退出他们所在的任何服务。当我打开应用程序时,我偶尔会在终端中收到一条警告,指出

UserWarning: The session cookie domain is an IP address. This may not work as intended in some browsers. Add an entry to your hosts file, for example "localhost.localdomain", and use that instead.
我在 Heroku 上托管此应用程序,所以我不这样做我认为编辑我的本地文件会有帮助,但如果有一种方法可以在 Heroku 上解决这个问题,那就太好了。我收到的另一条错误消息来自网站本身的控制台,内容如下:

Cookie“会话”很快就会被拒绝,因为它的“SameSite”属性设置为“None” 或无效值,没有“安全”属性。了解有关“SameSite”的更多信息 属性,请阅读 https://developer.mozilla.org/docs/Web/HTTP/Headers/Set-Cookie/SameSite

我将 Web 应用程序中的会话 cookie 设置为:

app.config["SESSION_FILE_DIR"] = tempfile.mkdtemp()
app.config["SESSION_PERMANENT"] = False
app.config["SESSION_TYPE"] = "filesystem"
app.config["SESSION_COOKIE_SECURE"] = True
app.config["SESSION_COOKIE_SAMESITE"] = "None"
Session(app)

但这并没有解决我的问题,并且两个错误不断出现。如果有任何方法可以手动设置 SameSite 和 Secure,那就太棒了。在 Heroku 上获取 https 连接不起作用,我不知道为什么会发生这种情况,并且它破坏了网站,如果有人有任何建议,我们将不胜感激!

python flask cookies session-cookies flask-session
2个回答
1
投票

您需要使用域名(https://domain.xxx/)而不是IP地址(https://123.123.123.213)来访问服务。

为了避免很多痛苦和错误,您应该致力于使用 HTTPS,特别是如果您希望 cookie 正常工作的话。在大多数情况下,SecureSameSite 属性都需要 HTTPS 才能正常工作。要使 HTTPS 正常工作,您需要域名和适当的证书。

为了补充这个答案,我写了一篇博客文章,更详细地介绍了这个主题:调试 cookie 问题


0
投票

我的 Flask 应用程序也有类似的问题...将值设置为 None(即 app.config["SESSION_COOKIE_SAMESITE"] = None)而不是“None”解决了我的问题...

© www.soinside.com 2019 - 2024. All rights reserved.