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

Flask Session Cookies Expire Almost instantly, Can't Set Samesite Attribte

我正在制作一个带有会话 cookie 登录系统的 Web 应用程序。当使用 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 “session” will be soon rejected because it has the “SameSite” attribute set to “None” or an invalid value, without the “secure” attribute. To know more about the “SameSite“ attribute, read 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 连接不起作用,我不知道为什么会这样,它会破坏网站,如果有人有任何建议,我们将不胜感激!

您需要使用域名访问服务(https://domain.xxx/) and not the IP-address (https://123.123.123.213)。

为了避免很多麻烦和错误,您应该以使用 HTTPS 为目标,尤其是当您希望 cookie 正常工作时。在大多数情况下,SecureSameSite 属性都需要 HTTPS 才能正常工作。要使 HTTPS 正常工作,您需要域名和适当的证书。