【问题标题】:Flask Session Cookies Expire Almost instantly, Can't Set Samesite AttribteFlask 会话 Cookie 几乎立即过期,无法设置 Samesite 属性
【发布时间】:2022-01-10 01:09:51
【问题描述】:

我正在制作一个带有会话 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“会话”将很快被拒绝,因为它的“SameSite”属性设置为“无” 或无效值,没有“安全”属性。要了解有关“SameSite”的更多信息 属性,阅读https://developer.mozilla.org/docs/Web/HTTP/Headers/Set-Cookie/SameSite

我将 Web 应用程序中的 Session 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


    【解决方案1】:

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

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

    【讨论】:

    • 我让我的网站建立了安全连接,但这个问题仍然存在,你知道为什么 cookie 总是消失吗?
    • 安全和 SameSite 警报不断出现
    • 收到什么提醒?
    • 我从网站控制台得到同样的“Cookie“会话”将很快被拒绝,因为它......”,奇怪的是它实际上并没有什么大不了的,因为它有效1/2 的时间,所以如果我将 cookie 设置为永久,它将在最终让它工作后永远工作。这非常奇怪,但没什么大不了的,所以感谢您最初的帮助
    猜你喜欢
    • 1970-01-01
    • 2020-07-04
    • 2020-04-18
    • 1970-01-01
    • 2020-07-13
    • 2020-10-18
    • 2020-05-17
    • 1970-01-01
    • 2020-03-31
    相关资源
    最近更新 更多