我想设置我的会话 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 的开发工具也显示属性与以前相同:
当我尝试像这样直接设置它时:
app.config.SESSION_COOKIE_SAMESITE='None'
app.config.SESSION_COOKIE_SECURE='True'
它也不起作用。返回:
AttributeError: ('配置键无效。某些设置仅可用 通过 Dash 构造函数', 'SESSION_COOKIE_SAMESITE')
我还发现this作为一个可能的解决方案,但它对我来说也不起作用。
提前感谢您的任何想法或建议!抱歉,如果我误解了这里的某些内容,因为我对网络开发和 python Flask 还很陌生..
基于文档:
https://flask.palletsprojects.com/en/2.1.x/security/#security-cookie
SESSION_COOKIE_SAMESITE
的配置可以是None
、'Strict'
或'Lax'
。
你需要改变
SESSION_COOKIE_SAMESITE = 'None'
到
SESSION_COOKIE_SAMESITE = None
(无引号)
因为,正如 @jeff 指出的,文档告诉我们唯一有效的值是
None
、'Strict'
或'Lax'
。