HTTP 요청 쿠키를 읽거나 응답 쿠키를 설정할 수 있도록 돕는 유틸리티
주요 특징
- 서버 전용 함수: • 서버 컴포넌트(Server Components)나 서버 액션(Server Actions)에서만 사용할 수 있음(클라이언트 컴포넌트 x)
- 읽는 것은 서버 컴포넌트에서 가능.
- 수정은 서버액션이나 route handler에서만 가능
- 동적 함수: • 동적 요청 데이터를 처리하기 때문에, 해당 경로는 동적 렌더링으로 전환됨
- 쿠키 읽기 및 쓰기 지원: • HTTP 요청의 쿠키를 읽거나 응답 쿠키를 설정할 수 있음
- HTTP 요청 시, 헤더에 Cookie 속성을 넣지 않아도 cookies()는 브라우저의 모든 쿠키를 알고 있음
- cf. 서버가 next가 아닐 때 : 브라우저는 HTTP 요청 시
Cookie
헤더에 포함된 쿠키만 서버로 전송하고, 서버는 브라우저 요청 헤더에 포함되지 않은 쿠키를 읽을 수 없음.
- 쿠키 삭제 기능: • 기존 쿠키를 명시적으로 삭제하거나 만료시킬 수 있음
주요 메서드
- get(이름) : 특정 이름의 쿠키 값 가져오기 / getAll() : 요청에 포함된 모든 쿠키 가져옴
import { cookies } from 'next/headers'; const cookieStore = cookies(); const theme = cookieStore.get('theme'); // 특정 쿠키 값 가져오기
import { cookies } from 'next/headers'; const cookieStore = cookies(); return cookieStore.getAll().map((cookie) => ( <div key={cookie.name}> <p>Name: {cookie.name}</p> <p>Value: {cookie.value}</p> </div> )); }
- set(쿠키이름, 값) : 응답에 새로운 쿠키 추가
cookieStore.set('name', 'lee'); // 기본 설정 cookieStore.set('name', 'lee', { secure: true }); // HTTPS에서만 전송 cookieStore.set({ name: 'name', value: 'lee', httpOnly: true, path: '/', }); // 세부 옵션 설정
- has(쿠키이름) : 존재하는지 확인
const hasThemeCookie = cookieStore.has('theme'); // true 또는 false 반환
- delete(쿠키이름) : 쿠키삭제
cookieStore.delete('test');