chrome 即使在 Samesite=None 的情况下也会阻止 Cookie

Mur*_*i K 0 cookies google-chrome flask samesite

我有一个托管在 Heroku 中的 Flask 应用程序,作为 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
Run Code Online (Sandbox Code Playgroud)

在 Chrome 开发工具中,我看到 cookie 被阻止。不过在 Firefox 中运行良好。我是否正确设置了 cookie?我知道这是由于 chrome80 更新造成的,但不确定解决方法

Mur*_*i K 5

samesite将会话cookie中的属性设置为None似乎已经解决了问题。

必须更新werkzeug(由 Flask 包装的 WSGI Web 应用程序库)并更新会话 cookie。IE

app.config['SESSION_COOKIE_SAMESITE'] = 'None'
app.config['SESSION_COOKIE_SECURE'] = True
Run Code Online (Sandbox Code Playgroud)

然而,这也取决于用户在“chrome://settings/cookies”中的偏好。

samesite如果选择以下选项之一,即使设置为“无”,Chrome 也会阻止会话 cookie

  • 阻止第三方 cookie
  • 阻止所有 cookie
  • 在隐身模式下阻止第三方 cookie(在隐身模式下阻止)。