有些资源说,与SameSite=Strict
不同,SameSite=Lax
在我们使用直接链接和顶级链接加载另一个网站时有效...但是如我所测试的,当我从{{1 }},浏览器将其视为直接在地址栏中键入<a href="mysite.com">
,因此它将接收所有cookie,甚至mysite.com
个cookie。
SameSite=Strict
或<form action="mysite.com", method="get">
也有相同之处,并且<form ... method="post>"
请求使所有cookie都完全加载。
那么<form>
和SameSite=Strict
有什么区别?
答案 0 :(得分:0)
严格和宽松是关于您的浏览器何时发送 cookie。您已测试浏览器何时接收 cookie。
浏览器使用SameSite设置来决定何时发送 cookie到其原始位置。
如果将SameSite设置为Strict,则cookie仅在第一方上下文中发送。用用户术语来说,只有在Cookie的站点与浏览器的URL栏中当前显示的站点匹配时,才会发送cookie。因此,如果将promo_shown cookie设置如下:
Set-Cookie:promo_shown = 1; SameSite =严格
当用户在您的网站上时,Cookie将与 如预期的要求。但是,当您链接到您的网站时,说 在另一个网站上从另一个站点或通过朋友的电子邮件 请求将不发送cookie。
相反,SameSite = Lax允许浏览器发送用于顶级导航的cookie,例如上面所述:在另一个站点上的链接或单击电子邮件中的链接。
这里是summary on MDN,包括第三个值SameSite = None:
SameSite属性接受三个值:
松懈
Cookie可以与顶级导航一起发送,并且会 与第三方网站发起的GET请求一起发送。这是 现代浏览器中的默认值。
严格
Cookie仅在第一方上下文中发送,而不会发送 以及第三方网站发起的请求。
没有
将在所有情况下发送Cookie,即发送跨域 允许。
以前没有默认值,但是最近的浏览器版本 放宽默认值以对某些内容具有合理的防御能力 类跨站点请求伪造(CSRF)攻击。
在最新的浏览器版本中,都不要求使用Secure属性。
如果您示例中的HTML表单位于其他网站(而不是mysite.com)上,则如果cookie具有SameSite = Strict,则不会将其发送回mysite.com。如果SameSite = Lax,并且表单具有method =“ get”,则浏览器将发送cookie,但是使用method =“ post”,则不会。