Skip to content
Client Plugin

쿠키(Cookies

[//]: # (title: 쿠키(Cookies))

코드 예제: client-cookies

Ktor 클라이언트는 다음과 같은 방식으로 쿠키를 수동으로 처리할 수 있도록 지원합니다:

  • cookie 함수를 사용하면 특정 요청에 쿠키를 추가할 수 있습니다.
  • setCookie 함수를 사용하면 응답에서 받은 Set-Cookie 헤더 값을 파싱할 수 있습니다.

HttpCookies 플러그인은 쿠키를 자동으로 처리하고 스토리지에 저장하여 호출 간에 이를 유지합니다. 기본적으로는 인메모리(in-memory) 스토리지를 사용하지만, CookiesStorage를 사용하여 영구 저장소(persistent storage)를 구현할 수도 있습니다.

종속성 추가

HttpCookiesktor-client-core 아티팩트만 필요하며 다른 특정 종속성은 필요하지 않습니다.

HttpCookies 설치 및 구성

HttpCookies를 설치하려면 클라이언트 구성 블록 내부의 install 함수에 전달하세요:

kotlin
val client = HttpClient(CIO) {
    install(HttpCookies)
}

이것만으로도 Ktor 클라이언트가 요청 간에 쿠키를 유지하도록 설정하기에 충분합니다. 전체 예제는 여기에서 확인할 수 있습니다: client-cookies.

또한 HttpCookies 플러그인에서는 ConstantCookiesStorage를 사용하여 각 요청에 특정 쿠키 세트를 추가할 수도 있습니다. 이는 서버 응답을 검증하는 테스트 케이스에서 유용할 수 있습니다. 아래 예제는 특정 도메인에 대한 모든 요청에 지정된 쿠키를 추가하는 방법을 보여줍니다:

kotlin
val client = HttpClient(CIO) {
    install(HttpCookies) {
        storage = ConstantCookiesStorage(Cookie(name = "user_name", value = "jetbrains", domain = "0.0.0.0"))
    }
}

쿠키 가져오기

클라이언트는 지정된 URL에 대한 모든 쿠키를 가져올 수 있는 cookies 함수를 제공합니다:

kotlin
client.cookies("http://0.0.0.0:8080/")

사용자 정의 쿠키 스토리지

필요한 경우 CookiesStorage 인터페이스를 구현하여 사용자 정의 쿠키 스토리지를 만들 수 있습니다:

kotlin
val client = HttpClient(CIO) {
    install(HttpCookies) {
        storage = CustomCookiesStorage()
    }
}

public class CustomCookiesStorage : CookiesStorage {
    // ...
}

AcceptAllCookiesStorage를 참고 자료로 활용할 수 있습니다.