此问题与他们强制设置SameSite属性(https://www.chromium.org/updates/same-site/incompatible-clients)的Chrome更新有关
通过此链接,Chrome51到66将不接受SameSite=None。但是,在Symfony设置中,我设置了以下内容:
framework:
...
session:
...
cookie_samesite: 'none'
cookie_secure: true现在,对于Chrome客户端51到66,我想要将None更改为Lax,所以我想这必须在请求级别进行更改。我知道如何检测Chrome版本,但我不确定在检测到设备后如何应用Lax。
默认情况下,我不能更改为Lax,因为网站可以是iframed。
有什么建议吗?
发布于 2020-09-16 16:21:02
如果我理解正确的话,您需要设置2个cookies,其值相同,但名称不同。例如:
// main cookie
$cookieFirst = Cookie::create("main_cookie")
->withValue("some_value_here")
->withPath("/")
->withExpires(0)
->withSecure(true) // important for chrome if SameSite=None
->withHttpOnly(false) // if you want access via JS
->withRaw(false)
->withSameSite(Cookie::SAMESITE_NONE) // SameSite=None;
// then don't forget to set this cookie to headers
// second cookie
$cookieSecond = Cookie::create("main_cookie.legacy")
->withValue("some_value_here")
->withPath("/")
->withExpires(0)
->withSecure(true) // important for chrome if SameSite=None
->withHttpOnly(false) // if you want access via JS
->withRaw(false)
->withSameSite("") // SameSite=Lax;
// then don't forget to set this cookie to headers too在域之间使用iframe实现通信时,我使用了这种方法。
https://stackoverflow.com/questions/63904165
复制相似问题