Python Flask - 如何设置会话 cookie 属性 SameSite=None 和 'Secure'

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

我想设置我的会话 cookie(通过 Flask 会话对象)属性“sameSite=None”和“Secure=True”。

这是必要的,因为我的 Dash 应用程序正在使用缓存在会话 cookie 中的登录机制(如下所示:代码示例)并且该应用程序嵌入到 iFrame 中。不幸的是,一旦它位于 iFrame 内,应用程序就不再可用,因为会话 cookie 无法再读取/设置,因为它现在被视为需要具有上述 cookie 属性的第三方 Cookie。例如,此处此处描述了此行为。

当我尝试将其添加到 server.py 中时(有关完整上下文,请参阅上面的“代码示例”链接):

app.config.update(
    SESSION_COOKIE_SAMESITE='None',
    SESSION_COOKIE_SECURE='True'
)

看来已经定下来了。至少 print() 返回输入的值,但嵌入 iFrame 时应用程序的登录仍然无法正常工作,Chrome 的开发工具也显示属性与以前相同: session cookie attributes in Chrome

当我尝试像这样直接设置它时:

app.config.SESSION_COOKIE_SAMESITE='None'
app.config.SESSION_COOKIE_SECURE='True'

它也不起作用。返回:

AttributeError: ('配置键无效。某些设置仅可用 通过 Dash 构造函数', 'SESSION_COOKIE_SAMESITE')

我还发现this作为一个可能的解决方案,但它对我来说也不起作用。

提前感谢您的任何想法或建议!抱歉,如果我误解了这里的某些内容,因为我对网络开发和 python Flask 还很陌生..

flask session cookies iframe samesite
2个回答
0
投票

基于文档:

https://flask.palletsprojects.com/en/2.1.x/security/#security-cookie

SESSION_COOKIE_SAMESITE
的配置可以是
None
'Strict'
'Lax'


0
投票

你需要改变

SESSION_COOKIE_SAMESITE = 'None'

SESSION_COOKIE_SAMESITE = None

(无引号)

因为,正如 @jeff 指出的,文档告诉我们唯一有效的值是

None
'Strict'
'Lax'

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