返回

Springboot应用设置Cookie的SameSite属性详尽指南

见解分享

Springboot 应用中设置 Cookie 的 SameSite 属性

Cookie 除了键值对之外,还有多个属性。其中,SameSite 属性是在 Chrome 51 开始引入的,它旨在防止 CSRF 攻击和用户追踪。

在 Java Web 应用程序中,通常使用 javax.servlet.http.Cookie 来设置 Cookie。而在 Springboot 中,同样使用 HttpCookie 来设置 Cookie。只不过 HttpCookie 是 Springboot 封装好的,使用起来更加方便。

如果想设置 SameSite 属性,只需要设置 Cookie 对象的 HttpCookie.setSameSite 属性即可。

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.Cookie;

@RestController
public class CookieController {

    @GetMapping("/setCookie")
    public String setCookie() {
        Cookie cookie = new Cookie("name", "value");
        cookie.setSameSite("Strict");
        response.addCookie(cookie);
        return "Cookie set successfully";
    }

}

在上面的代码中,我们创建了一个名为 "name" 的 Cookie,并将其值设置为 "value"。然后,我们使用 setSameSite 方法将 Cookie 的 SameSite 属性设置为 "Strict"。最后,我们使用 response.addCookie 方法将 Cookie 添加到响应中。

SameSite 属性有三个可用的值:

  • Lax:当用户在同一个站点或跨站点时,允许浏览器发送 Cookie。这是默认值。
  • Strict:浏览器只在用户在同一个站点时发送 Cookie。
  • None:浏览器在所有情况下都发送 Cookie。

应该根据具体情况选择合适的 SameSite 属性值。

总结

在 Springboot 应用中,设置 Cookie 的 SameSite 属性非常简单。只需要设置 HttpCookie.setSameSite 属性即可。SameSite 属性有三个可用的值:LaxStrictNone。应该根据具体情况选择合适的 SameSite 属性值。