복습을 위한

쿠키 본문

http헤더

쿠키

ho042479 2024. 1. 17. 21:00

쿠키가 무엇인지 예시를 통해알아보자. 일단 쿠키를 미사용하는 경우이다.

welcome페이지에 들어가서 홍길동으로 로그인을 했다고 가정을 하자. 서버에서는 로그인했다고 응답을 준다. 그럼 로그인된 html화면이 나올 것이다. 

그리고 다시 사용자는 welcome페이지로 들어갔다. 사용자는 안녕하세요 홍길동을 기대했는데 서버에서는 안녕하세요 손님이라고 한다.. 왜냐? 지금 서버는 로그인이후 다시 welcome페이지에 접근했을 때 그 사람이 로그인한 사람인지 아닌사람인지 구별할 수 있는 방법이 없다. 홍길동이 보낸요청인지 아닌지 모른다는 것이다. 

이건 http가 무상태 프로토콜이기 때문이다. 클라이언트와 서버가 요청과 응답을 주고 받으면 연결이 끊어지고 다시 요청해도 서버는 이전 요청을 기억하지못한다. 클라이언트와 서버는 서로 상태를 유지하지않는다.

이 경우 대안을 알아보자.

 

모든 요청과 링크에 계속 사용자 정보를 포함해야한다. 하지만 이건 심각한 문제가 있다.

보안이나 개발측면이나 여러문제가 발생한다. 그래서 등장한 것이 쿠키이다!!!!!!!!!!!!!!

 

똑같이 처음에 홍길동이 로그인을 했다. 이번에는 서버가 Set cookie헤더에 유저정보를 넣어서 응답한다.

그럼 웹브라우져는 내부에 쿠키저장소가 있는데 그 Set cookie값을 받아서 저장한다.

 

로그인이후 이제 welcome페이지에 접근하는 요청을 서버에 보낼 때 이제 그 요청에는 쿠키정보가 들어간다. 요청을 보낼 때마다 자동으로 웹브라우져가 쿠키저장소를 뒤져 쿠키를 요청에 같이 보내는 것이다. 그래서 서버도 홍길동인 것을 계속 인지할 수가 있다.

 

expires는 쿠기가 만료되는 시간이다. path와 도메인은 이 쿠기정보가 이러한 경로와 도메인에 허용되는구나를 알 수 있다.

로그인세션에 정말 많이 사용하고 광고 정보 트래킹(이 웹브라우져 쓰는 사람이 이러이러한 광고를 보는구나~~알수있다)에도 많이 사용된다.

 

쿠키는 네트워크 트래픽 추가가 유발된다. 그래서 최소한의 정보만 사용하는게 좋다.

서버에 전송하지않을거면 웹 스토리지를 사용하면된다. 그럼 요청 때마다 쿠키를 전달하지않아도된다.

 

쿠키 생명주기는 지정해 줄 수있다.

내가 지정한 쿠키가 아무 사이트 들어갈 때마다 막 전달된다면 큰일난다. 그래서 쿠키는 도메인을 지정할 수가 있다.

명시를 한다면 하위도메인까지 접근할 수 있고 도메인을 명시하지않으면 현재 문서 기준 도메인만이 적용된다. 

 

경로도 지정할 수있다. 도메인으로 먼저 필터를 하고 그 도메인안의 경로로 추가 필터를 하는 것이다.  경로를 넣으면 그 경로포함 하위 경로 페이지만 쿠키 접근가능하다. 보통은 path=/루트로 지정한다. 왜냐하면 한 도메인안에서는 보통 쿠키를 다 전송하기를 원하기 때문이다. 특별한 경우에는 지정하면 된다.

 

secure를 적용하면 https인 경우에만 쿠키가 전송된다. httponly는 xss공격을 방지를 위해 사용된다. 자바스크립에서 접근 불가하고 http전송에만 사용된다.  

 

 

 

출처

https://www.inflearn.com/course/lecture?courseSlug=http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&unitId=61382

'http헤더' 카테고리의 다른 글

검증헤더와 조건부요청1  (0) 2024.01.19
캐시 기본 동작  (0) 2024.01.17
특별한 정보, 인증  (1) 2024.01.16
일반 정보  (0) 2024.01.15
전송방식(Transfer-Encoding)  (0) 2024.01.14