Cookies Samesite=当用户单击来自不同域的链接时,302重定向中不包括严格的cookie 客户将在其网站上链接到我们的一个网页:customer.site/links.html 一个人点击该链接并被发送到我们的.site/webapp/handlerequest.aspx?someparam=somevalue someparam的值在cookie中设置为SameSite=Strict,然后使用302重定向到同一域上的另一页:

Cookies Samesite=当用户单击来自不同域的链接时,302重定向中不包括严格的cookie 客户将在其网站上链接到我们的一个网页:customer.site/links.html 一个人点击该链接并被发送到我们的.site/webapp/handlerequest.aspx?someparam=somevalue someparam的值在cookie中设置为SameSite=Strict,然后使用302重定向到同一域上的另一页:,cookies,http-status-code-302,samesite,Cookies,Http Status Code 302,Samesite,浏览器在302重定向到/webapp/someotheraction时不包含此cookie 只有当我们专门更改代码以将此cookie设置为SameSite=Strict时,才会发生这种情况 这发生在Chrome、Firefox、Edge和IE(旧IE)中 这是故意的吗?为什么?既然我们从域上的一个请求转到同一域中的另一个请求,那么不应该包括SameSite=Strictcookies吗?这是否与交叉源时默认为严格源的referer策略有关?没有说任何关于cookies的内容这是一个跨站点请求,因

浏览器在302重定向到/webapp/someotheraction时不包含此cookie

只有当我们专门更改代码以将此cookie设置为
SameSite=Strict
时,才会发生这种情况

这发生在Chrome、Firefox、Edge和IE(旧IE)中


这是故意的吗?为什么?既然我们从域上的一个请求转到同一域中的另一个请求,那么不应该包括
SameSite=Strict
cookies吗?这是否与交叉源时默认为严格源的referer策略有关?没有说任何关于cookies的内容

这是一个跨站点请求,因为最初的导航是跨站点的(从
customer.site
our.site
)。严格的cookie不会在跨站点请求时发送。请求被重定向(在本例中,重定向到
our.site
上的另一个URL)并不重要,只是用户单击跨站点链接意味着请求是跨站点的


至于为什么会出现这种情况,这是因为负责启动导航的来源对于防止跨站点请求伪造非常重要()。想象一下如果
https://evil.site
有一个指向
https://bank.site/transfer-funds
它重定向到
https://bank.site/transact
。我们不希望在重定向后将严格的cookie发送到
/transact
端点,即使它是由同一个站点重定向到的,因为发起源是跨站点的。

这也发生在iOS 14.4上的Safari 14上。我接受你的答案,我没有与你争论,但我认为这很愚蠢。我们想把那块饼干贴出来。我想我们必须使用samesite=Lax
Request URL: https://our.site/webapp/handlerequest.aspx?someparam=somevalue
Request Method: GET
Status Code: 302 
Remote Address: ...
Referrer Policy: strict-origin-when-cross-origin

cache-control: private
content-length: ...
content-type: text/html; charset=utf-8
date: ...
location: /webapp/someotheraction
server: Microsoft-IIS/10.0
set-cookie: someparam=somevalue; expires=Thu, 17-Mar-2022 14:41:13 GMT; path=/; secure; HttpOnly; SameSite=Strict
strict-transport-security: max-age=31536000
x-frame-options: SAMEORIGIN