chrome 即使使用 samesite=None 也阻止 cookie
chrome blocking the cookies even with samesite=None
我有一个 flask 应用程序托管在 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 更新,但不确定解决方法
您可以通过检查位于 https://samesite-sandbox.glitch.me/
的测试站点来检查您的浏览器是否按预期处理 cookie
如果所有行都包含绿色勾号 (✔️),则 cookie 可能存在某种问题,我建议检查 DevTools 中的“问题”选项卡和“网络”选项卡以确认 set-cookie
header 绝对包含它应该包含的内容。
如果测试站点上有任何红色或橙色叉号 (✘),那么您的浏览器中的某些内容正在影响 cookie。检查您是否阻止了 third-party cookies (chrome://settings/cookies
) 或 运行 可能执行类似操作的扩展程序。
将会话 cookie 中的 samesite
属性设置为 None
似乎已经解决了问题。
必须更新 werkzeug
(由 flask 包装的 WSGI 网络应用程序库)并更新会话 cookie。
即
app.config['SESSION_COOKIE_SAMESITE'] = 'None'
app.config['SESSION_COOKIE_SECURE'] = True
不过,这也取决于用户在'chrome://settings/cookies'中的偏好。
Chrome 将阻止会话 cookie,即使 samesite
设置为 None 如果选择以下选项之一
- 阻止 third-party cookies
- 阻止所有 cookie
- 在隐身模式下阻止 third-party cookie(在隐身模式下阻止)。
我有一个 flask 应用程序托管在 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 更新,但不确定解决方法
您可以通过检查位于 https://samesite-sandbox.glitch.me/
的测试站点来检查您的浏览器是否按预期处理 cookie如果所有行都包含绿色勾号 (✔️),则 cookie 可能存在某种问题,我建议检查 DevTools 中的“问题”选项卡和“网络”选项卡以确认 set-cookie
header 绝对包含它应该包含的内容。
如果测试站点上有任何红色或橙色叉号 (✘),那么您的浏览器中的某些内容正在影响 cookie。检查您是否阻止了 third-party cookies (chrome://settings/cookies
) 或 运行 可能执行类似操作的扩展程序。
将会话 cookie 中的 samesite
属性设置为 None
似乎已经解决了问题。
必须更新 werkzeug
(由 flask 包装的 WSGI 网络应用程序库)并更新会话 cookie。
即
app.config['SESSION_COOKIE_SAMESITE'] = 'None'
app.config['SESSION_COOKIE_SECURE'] = True
不过,这也取决于用户在'chrome://settings/cookies'中的偏好。
Chrome 将阻止会话 cookie,即使 samesite
设置为 None 如果选择以下选项之一
- 阻止 third-party cookies
- 阻止所有 cookie
- 在隐身模式下阻止 third-party cookie(在隐身模式下阻止)。