首页 > 解决方案 > 即使使用 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 更新,但不确定解决方法

标签: google-chromeflaskcookiessamesite

解决方案


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(在隐身模式下阻止)。

推荐阅读