Java를 사용하여 쿠키에 SameSite 속성 추가

6193 단어 Java
(20/01/0819:45 추서)

개요


javax.servlet.http.쿠키에는 SameSite 속성에 대한 API가 첨부되어 있지 않습니다.
그때의 대응이야.
참고로 SameSite 속성은 거의 모든 브라우저에서 지원됩니다.
참고 자료

쿠키 레벨 사용 안 함, Set-Cookie 헤드 사용


Spring boot을 사용해 보십시오.
@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!";
    }


태키시로 무사히 들어갔습니다.

스프링 부트 편


스프링부트에는 리스폰스 쿠키라는 제목을 만들기 위한 쿠키 문자열을 만드는 클래스가 있다.
이 레벨을 사용하면 Set-Cookie에서 설정한 응답을 반환하면 쿠키가 설정됩니다.
@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";
    }
}


쿠키 쓰기가 빈번하면 매개 변수로 설정된 사용자 정의 클래스를 만드는 것이 좋습니다.
또는 Apache와nginx 같은 웹 서버 측면에서 통일적으로 설정할 수도 있습니다.
참고 자료

참고 자료


Class Cookie
https://stackoverflow.com/questions/42717210/samesite-cookie-in-java-application
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie
Class ResponseCookie

좋은 웹페이지 즐겨찾기