针对Chrome版本67及以上
注意,这个里面的SameSite不能设为
null
,设空的话,还是会走默认值Lax
其中,
SameSite
的值可以填3个:Strict
,Lax
,None
.
缺省的值为Lax
,而且当你设置其为空时,在新的Chrome中还是会给予默认值Lax
.3个模式的介绍
Strict
严格模式
Lax
宽松模式
None
可以在第三方环境中发送cookie
在这种模式下,必须同时启用Secure
才行Chrome版本(51~66)
在这些版本中,浏览器不接受
SameSite=None
.如果套用上面的代码会发现无法登录解决方法1
public static void setCookies(HttpServletResponse response, String name, String value, int selectExpires, boolean openbrowser) { ResponseCookie cookies = ResponseCookie.from(name, value) // key & value .httpOnly(true) // 禁止js读取 .secure(true) // 在http下也传输 .path("/") // path .maxAge(time(selectExpires)) // 1个小时候过期 .sameSite("None") // 大多数情况也是不发送第三方 Cookie,但是导航到目标网址的 Get 请求除外 .build(); response.setHeader(HttpHeaders.SET_COOKIE, cookies.toString()); }Chrome 计划将
Lax
变为默认设置。这时,网站可以选择显式关闭SameSite
属性,将其设为None
。不过,前提是必须同时设置Secure
属性(Cookie 只能通过 HTTPS 协议发送),否则无效。
关于解决Chrome新版本中cookie跨域携带和samesite的问题处理
原文:https://www.cnblogs.com/cuijinlong/p/13638716.html