这三个 cookie 属性到底拦了什么?没写 SameSite 会怎样?跨站场景下什么配置才能带上 cookie?这篇不靠文档,用 localhost 与 127.0.0.1 这两个不同的站点在真实的 Chrome 里逐种配置跑一遍。
[HttpOnly=True, SameSite 未设置]
login 200
js_cookie_visible False
js_cookie (空)
first_party_read True
cross_site_read cookie sent: false
[HttpOnly=False, SameSite 未设置]
login 200
js_cookie_visible True
js_cookie session=<值>
first_party_read True
cross_site_read cookie sent: false
[HttpOnly=True, SameSite=Lax]
login 200
js_cookie_visible False
js_cookie (空)
first_party_read True
cross_site_read cookie sent: false
[HttpOnly=True, SameSite=Strict]
login 200
js_cookie_visible False
js_cookie (空)
first_party_read True
cross_site_read cookie sent: false
[HttpOnly=True, SameSite=None(无 Secure)]
login 200
js_cookie_visible False
js_cookie (空)
first_party_read False
cross_site_read cookie sent: false
[HttpOnly=True, SameSite=None + Secure]
login 200
js_cookie_visible False
js_cookie (空)
first_party_read True
cross_site_read cookie sent: true
[HttpOnly=True, SameSite=Lax + Secure]
login 200
js_cookie_visible False
js_cookie (空)
first_party_read True
cross_site_read cookie sent: false上一篇:Session Cookie 安全属性;下一篇:CSRF 防护。
浏览器是本机的 Google Chrome 无头模式,两个站点分别是 127.0.0.1 与 localhost 上不同端口的 gunicorn 服务。第一次运行时跨站 iframe 偶尔没有返回结果,我给每种配置加了最多 4 次重试,并把无结果的运行丢弃。