후라이
[HTTP] 쿠키 본문
1. HTTP : Stateless
- Set-Cookie : 서버에서 클라이언트로 쿠키 전달한다.
- Cookie : 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청시 서버로 전달한다.
쿠키를 사용하지 않으면 클라이언트가 /welcome에 접속하면 어서오세요~라고 하되,
"홍길동"으로 로그인하고 /welcome 접속시 어서오세요 홍길동님~을 기대한다.
그런데 쿠키가 없으면 들어온 클라이언트가 홍길동인지 장윤복인지 서버는 전혀 모르는 것이다.
하지만, HTTP는 무상태 프로토콜이다.
클라이언트와 서버가 요청을 주고 받으면 연결이 끊어지며,
클라이언트가 다시 요청하면 서버는 이전 요청을 기억하지 못한다.
그러므로, 클라이언트와 서버는 서로 상태를 유지하지 않는다.
2. 쿠키
위와 같이 사용자 인증 상태, 쇼핑 카트 정보, 사이트 설정 등 정보를 저장하기 위해서, "쿠키"를 사용한다.
- 만약 클라이언트가 위 요청 메시지와 같이 로그인 정보를 서버에게 전송하면,
- 서버가 이를 처리하고 쿠키를 생성(Set-Cookie)해 클라이언트에게 전달한다.
- 그럼 클라이언트가 서버에게 받은 쿠키(Set-Cookie 값)를 로컬에 저장한다.
- 이후 해당 도메인에 대한 요청 시 자동으로 쿠키를 포함해 서버에 전송한다.
2.1) 쿠키 상세 구조
Set-Cookie: sessionId=abcde1234;
expires=Sat, 26-Dec-2020 00:00:00 GMT;
path=/;
domain=.google.com;
Secure
- sessionId=abcde1234 : 쿠키 이름과 값. 서버가 세션 ID를 생성해서 클라이언트에 전달한 것이다.
- expires=Sat, 26-Dec-2020 00:00:00 GMP : 쿠키의 만료 날짜 설정, 이 날짜까지 쿠키가 유효하다.
- 세션 쿠키 : 만료 날짜를 생략하면 브라우저 종료 시 까지만 유지
- 영속 쿠키 : 만료 날짜를 입력하면 해당 날짜까지 유지 - path=/ : 쿠키가 적용되는 URL 경로, "/"는 사이트의 모든 페이지에서 쿠키를 사용할 수 있음을 의미한다.
- domain=.google.com : 쿠키가 전송될 도메인을 지정한다.
- domain을 명시하면 명시한 문서 기준 도메인과 서브 도메인이 모두 포함된다.
- ex) domain=example.org를 지정해서 쿠키를 생성하면
example.org와 dev.example.org 모두 쿠키 접근이 가능하다.
- 만약 example.org에서 쿠키를 생성하고, domain 지정을 생략하면
example.org에서만 쿠키 접근이 가능하고, dev.example.org는 쿠키가 접근하지 않는다. - Secure : HTTPS 연결에서만 쿠키를 전송하도록 설정해 보안을 강화한다.
쿠키는 HTTP 요청 시 자동으로 서버에 포함되어 전송된다. 따라서, 불필요하게 큰 데이터를 쿠키에 저장하면
네트워크 트래픽이 증가할 수 있다.
또한, 주민등록번호, 신용카드 번호화 같은 민감한 정보를 쿠키에 저장하면 보안에 위험하니 주의해야한다.
2.2) 쿠키 사용처
- 사용자 로그인 세션 관리
- 사용자의 로그인 상태를 유지하기 위해 세션 ID를 저장한다.
- 사용자가 로그인한 상태에서 페이지를 새로고침하거나, 다른 페이지로 이동해도 로그인이 유지된다. - 광고 정보 트래킹
- 사용자의 웹사이트 방문 이력 등을 추적해 맞춤형 광고를 제공한다.
- 특정 상품을 검색한 후 다른 웹사이트에서도 관련 광고가 나타나는 경우이다.
등등..
[참고] : 인프런-김영한 <모든 개발자를 위한 HTTP 웹 기본 지식>
'HTTP' 카테고리의 다른 글
[HTTP] HTTP 헤더 2 | 캐시 | 검증 헤더와 조건부 요청 (2) | 2024.12.17 |
---|---|
[HTTP] Header | 일반 헤더 1 (0) | 2024.12.15 |
[HTTP] HTTP 상태 코드 (2) | 2024.12.15 |
[HTTP] HTTP 메서드 활용 | 정적 / 동적 데이터 | HTML Form | HTTP API (1) | 2024.12.15 |
[HTTP] HTTP Method (3) | 2024.12.12 |