https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., - 강의 소개 | 인프런...

www.inflearn.com

모든 저작권은 위의 강의에 있습니다. 


 

 

 

헤더 


HTTP전송에 필요한 모든 부가정보 

 

 

메세지 본문은 엔티티 본문을 전달하는데 사용 

엔티티 본문은 요청이나 응답에서 잔달할 실제 데이터 

엔티티 헤더는 엔티티 본문의 데이터를 해석할 수 있는 정보 제공 

 

 

협상 - 클라이언트가 선호하는 표현 요청 


 

Accept: 클라이언트가 선호하는 미디어 타입 전달 

Accept-Charset: 클라이언트가 선호하는 문자 인코딩

Accept-Encoding: 클라이언트가 선호하는 압축 인코딩 

Accept-Language: 클라이언트가 선호하는 자연 언어 

 

 

 

전송 방식 설명 


  1. 단순 전송 
  2. 압축 전송 
  3. 분할 전송 
  4. 범위 전송 

1.

2. 

 

3. (길이가 없다) 

4.

 

 

일반 정보 


From: 유저 에이전트 이메일 정보 

Referer: 이전 웹 페이지 주소 

User-Agent: 유저 에이전트 애플리케이션 정보 

Server: 요청을 처리하는 오리진 서버의 소프트웨어 정보 

Date: 메세지가 생성된 날짜 

 

 

 

특별한 정보 


  1. Host: 요청한 호스트 정보(도메인)
  2. Location: 페이지 리다이렉션 
  3. Allow: 허용 가능한 HTTP 메서드 
  4. Retry-After: 유저 에이전트가 다음 요청을 하기까지 기다려야 하는 시간 

 

1.

 

쿠키


HTTP 쿠키(웹 쿠키, 브라우저 쿠키)는 서버가 사용자의 웹 브라우저에 전송하는 작은데이터 조각으로 브라우저는 이 데이터 조각들을 저장해 놓았다가 동일한 서버에 재 요청시 저장된 데이터를 함께 전송한다.

  • Set-Cookie: 서버에서 클라이언트로 쿠키 전달(응답)
  • Cookie: 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청시 서버로 전달한다. 
 

주 사용 목적

1.
세션 관리(Session Management)
⇒ 서버에 저장해야 할 로그인, 장바구니, 게임 스코어등의 정보 관리
2.
개인화(Personalization)
⇒ 사용자 선호, 테마 등의 세팅
3.
트래킹(Tracking)
⇒ 사용자 행동을 기록하고 분석하는 용도
 
 

 
서버입장에서는 이게 로그인한 유저가 보낸 요청인지 알 수 없다.
그렇기에 게스트(비회원)로 판단해서 응답을 할 수밖에 없다.
HTTP는 무상태 프로토콜(Stateless Protocol)이라는 점을 기억해야 한다.

 

 

HTTP - Stateless 

클라이언트와 서버가 요청과 응답을 주고 받으면 연결이 끊어진다.
클라이언트가 다시 요청하면 서버는 이전 요청을 기억하지 못한다.
클라이언트와 서버는 서로 상태를 유지하지 않는다.

 

대안? 

 


 

매번 요청할 때마다 로그인한 유저의 정보를 담아서 보내주면 서버측에서는 해당 정보를 분석해 로그인상태를 확인한다.
모든 요청과 링크에 사용자 정보를 포함해야하기에 비용소모가 몹시 크다.

 

쿠키 사용!

 

클라이언트에서 로그인을 요청하며 데이터를 보내면 서버에서는 Set-Cookie로 로그인 정보를 담아 응답한다.
웹브라우저는 내장된 쿠키 저장소에 Set-Cookie에 있는 정보를 저장한다.
그래서 로그인 이후 welcome 페이지에 접근하면 쿠키를 조회해서 쿠키값을 Cookie에 담아서 보낸다.

 

 

쿠키 사용처 및 주의점

  • 사용처
사용자 로그인 세션 관리
광고 정보 트래킹
  • 쿠키 정보는 항상 서버에 전송된다. 
네트워크 트래픽을 추가적으로 유발한다.
최소한의 정보만 사용해야 한다(세션, id, 인증 토큰)
서버에 전송하지 않고 웹 브라우저 내부에 데이터를 저장하고 싶은 경우 웹스토리지를 사용
  • 주의점
보안에 민감한 데이터는 저장하면 안된다.
⇒ 주민번호, 신용카드 번호 등

+ Recent posts