(08/01/20 19:45后记)
概述
javax.servlet.http.Cookie没有用于添加SameSite属性的API。
在这种情况下就是一种回应。
顺便说一下,几乎所有浏览器都支持SameSite属性。
参考
使用Set-Cookie标头代替cookie类
我将在Spring boot中尝试它。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | @RestController public class DemoController { @GetMapping(value = "/") public String index(HttpServletResponse response) { String name = "name"; String value = "takeshi"; String cookie = String.format("%s=%s; max-age=3600; Path=/; HttpOnly; Secure; SameSite=Lax;", name, value); response.addHeader("Set-Cookie", cookie); return "hello, world!"; } |
Takeshi已安全进入。
弹簧靴
Spring Boot具有一个名为ResponseCookie的类,该类为标头创建一个cookie字符串。
如果使用此类并返回Set-Cookie设置的响应,则将设置cookie。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | @RestController public class DemoController { @GetMapping(value = "/") public String index(HttpServletRequest request, HttpServletResponse response) { String name = "name"; String value = "takeshi"; ResponseCookie cookie = ResponseCookie.from(name, value).domain("localhost").maxAge(Duration.ofDays((long) 1)) .httpOnly(true).secure(true).sameSite("Strict").build(); response.addHeader("Set-Cookie", cookie.toString()); return "Hello, World"; } } |
如果您经常编写cookie,那么最好创建一个自定义类来接收和设置参数。
另外,您可以在Web服务器端进行批处理设置,例如Apache或nginx。
参考
参考
类Cookie
https://stackoverflow.com/questions/42717210/samesite-cookie-in-java-application
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Set-Cookie
类响应Cookie