2020-08-16 17:16

@doubuxingle 可以这么理解,https 且 secure=true

2020-07-16 13:32

思路不错,前台省去很多代码,收藏

2020-07-16 10:50

Controller代码看到Token这里,搜了一下,收藏了。

2020-07-08 15:21

@久伴轻尘 正解。设置缓存生命周期10分钟,闲置不超过10分钟。如果际使用的过程中缓存超过10反而是异常了

2020-06-05 16:11

牛叉!

2020-06-05 14:16

注意,第3种方法,前提是不能有重复的cookie,若有Controller.setCookie操作要去掉。

2020-06-05 14:14

备忘:

1、后台语言的支持程度
目前还没有哪个后台语言的 API 支持了 SameSite 属性,比如 php 里的 setcookie 函数,或者 java 里的 java.net.HttpCookie 类,如果你想使用 SameSite,需要使用更底层的 API 直接修改 Set-Cookie 响应头。Node.js 本来就没有专门设置 cookie 的 API,只有通用的 setHeader 方法,不过 Node.js 的框架 Express 已经支持了 SameSite。

2、尝试创建全局Handler对所有response中的cookie抓出来增加samesite属性。
尝试失败。
原因有3:
(1)HttpServletResponse不允许获取cookie,更无法修改cookie内容
(2)HttpServletResponse中,getHeaders只对setHeader(和addHeader)的内容起效,无法获取Set-Cookie内容。因此无法修改。


3、强行不用addCookie方法,用addHeader可行
用addHeader("Set-Cookie", "...")强行设置cookie虽然header里面出现了一个set-Cookie值,且浏览器不再报警。
sameSite属性也正常设置。

... 的内容:
String c = LoginService.COOKIE_SESSION_NAME+"="+sessionId+"; path=/; HttpOnly; Max-Age=604800; Expires=Fri, 12-Jun-2020 05:44:18 GMT; sameSite=Lax";

注意点:addHeader或setHeader里面的value字符串,不论何种类型,不能带任何引号。

有扰了。

2020-06-04 16:40

@JFinal 好的。目前对项目没有影响。

只是想找个解决方案,但刚才尝试了其它方式也不行。比如getHeader、setHeader只针对自定义header参数,系统内定的参数,servlet还是进行了相当的防注入措施。

2020-06-04 16:19

@JFinal
另外,如果之前设置过该cookie的secure值为true,后来改回原代码(不指定sameSite和secure属性,相当于只有sameSite=none)的情况下

浏览器不再传回cookie里面的value值sessionId,会导致登录失败。