google-chrome - 即使使用 samesite=None,chrome 也会阻止 cookie
问题描述
我有一个托管在 heroku 中的烧瓶应用程序,作为 iframe 嵌入到我的一个网站中。假设将其a.com
呈现<heroku_url>.com
为 iframe。当用户访问a.com
时,<heroku_url>.com
会呈现并创建会话。
from flask import session, make_response
@app.route("/")
def index():
session['foo'] = 'bar'
response = make_response("setting cookie")
response.headers.add('Set-Cookie', 'cross-site-cookie=bar; SameSite=None; Secure')
return response
在 Chrome 开发工具中,我看到 cookie 被阻止。虽然在 Firefox 中运行良好。我是否正确设置了cookie?我知道这是由于 chrome80 更新,但不确定解决方法
解决方案
samesite
将会话 cookie 中的属性设置为None
似乎已经解决了这个问题。
必须更新werkzeug
(由烧瓶包装的 WSGI Web 应用程序库)并更新会话 cookie。IE
app.config['SESSION_COOKIE_SAMESITE'] = 'None'
app.config['SESSION_COOKIE_SECURE'] = True
但是,这也取决于用户在“chrome://settings/cookies”中的偏好。
如果选择了以下选项之一,即使samesite
设置为无, Chrome 也会阻止会话 cookie
- 阻止第三方 cookie
- 阻止所有 cookie
- 在隐身模式下阻止第三方 cookie(在隐身模式下阻止)。
推荐阅读
- c# - 如何使用C#在excel中复制垂直一行以粘贴到同一个文件中的另一个垂直
- excel - Excel - 最小值和 If 语句 - 日期错误
- visual-studio - 如何排除所有内容文件?
- vba - 使用用户提示的文件路径将工作簿另存为 CSV
- reactjs - React-管理多个页面
- javascript - 使用 webpack 和 typescript 在项目之间共享代码
- python - 在 PuLP 中编写约束
- php - Laravel Mongodb JSON 字段更新
- sql - 分段求和 -teradata sql
- python - python3中for循环中'in range()'用法和'element in elements'用法之间的参考差异