본문 바로가기

강의 내용 정리/HTTP 웹 기본 지식

Section 7. HTTP 헤더1 - 일반 헤더

- 1) HTTP 헤더 개요

- 2) 표현

- 3) 콘텐츠 협상

- 4) 전송 방식

- 5) 일반 정보

- 6) 특별한 정보

- 7) 인증

- 8) 쿠키

 

-----------------------------------------------------------------------------------------------------------------------------------------

 

1) HTTP 헤더 개요

 

# HTTP 헤더 복습

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

 

 

# HTTP 헤더의 과거(RFC2616)

 

 

 

# HTTP 헤더의 현재 (RFC7230~7235)

 

 

 

-----------------------------------------------------------------------------------------------------------------------------------------

 

 

2) 표현

 

 

   # 1. Content-Type : 표현 데이터의 형식

      - 리소스를 HTML or JSON 뭘로 전송(표현) 할거야?? = 메시지 바디에 들어간 내용이 뭔지 표현

      - application/json 의 경우 기본 인코딩 : UTF-8

 

 

 

   # 2. Content-Encoding : 표현데이터의 압축방식

      - 압축정보를 줘야 읽는 쪽에서 풀 수 있음

      - gzip 압축, identity : 같다(압축X)

 

 

 

 

   # 3. Content-Language : 표현데이터의 자연 언어

      - ex) 큰 공식사이트의 경우 apple.com 언어 바꿀 때

 

 

 

   # 4. Content-Length : 바이트단위

 

 

 

-----------------------------------------------------------------------------------------------------------------------------------------

 

 

3) 콘텐츠 협상

   - 클라이언트가 선호하는 표현을 서버에 요청

   - ex) 클라이언트가 한국에 살면 서버에 최대한 한국어 달라고 요청

 

 

 

# Accept-Language

 

 

 

 

 

 

# Accept-Language 복잡한 예시

 

   - ko-KR;q1 가장 높다 -> 숫자 내림차순으로 우선순위

 

 

# Accept

 

 

 

-----------------------------------------------------------------------------------------------------------------------------------------

 

 

 4) 전송 방식

 

 

 

   1) 단순 전송

      - 한번에 요청, 한번에 받기

 

 

 

2) 압축 전송

      - 서버에서 압축 후 전송

      - Content-Encoding 정보 추가 해야함 -> 클라이언트가 풀 수 있음

 

 

 

3) 분할 전송

      - Transfer-Encoding : chunked  추가, chunk는 덩어리라는 뜻

      - 용량 큰 것을 분할하여 전송 ( 크면 기다려야 할 수도 있다. -> 먼저 온 것부터 차례로 보여줌 )

      - Content-Length 넣으면 안됨 ( 이유1. 모른다.  이유2. chunk마다 byte표시가 있다. )

 

 

 

4) 범위 전송

      - ex) 이미지 받다가 끊김 -> 다시 요청할 때 못받은 범위 요청 ( 처음부터 다시 요청하면 용량 아까움 )

      - Content-Range 정보 추가

 

 

 

 

-----------------------------------------------------------------------------------------------------------------------------------------

 

5) 일반 정보

 

 

1) From : 잘 안씀

 

2) Referer ( 많이 씀) : 이전 사이트 정보

   - 요청에서 사용, 유입경로 분석 가능

 

 

 

3) User-Agent

   - 클라이언트의 애플리케이션(웹 브라우저) 정보

   - ex) 특정 브라우저의 버그 찾기

   - 통계 정보, 요청에 사용

 

 

 

 

4) Server

   - ORIGIN Server : 진짜 응답해주는 서버 = 마지막 서버 = 표현데이터 만들어주는 서버

   - ORIGIN Server의 소프트웨어 정보

   - 응답에서만 사용

 

 

 

-----------------------------------------------------------------------------------------------------------------------------------------

 

 

6) 특별한 정보

 

 

 

1) Host : 진짜 중요!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!( 몇없는 필수값 헤더 중 하나 )

   - 하나의 IP주소에 여러 도메인이 적용되어 있을 때

   - 요청에서 사용

 

 

# Host 예시

 

   - 하나의 서버에 여러개의 애플리케이션이 다른 도메인으로 구동되어있다.

 

 

   - /hello가 aaa.com bbb.com ccc.com중 어디서 들어가야할지 모름 ( IP로만 통신하기 때문에 ) (=요청메시지에 IP정보만)

   - 그 뒤로 Host가 필수값 헤더가 됨

 

 

   - 서버가 Host 값 보고 가상 호스팅

 

 

 

2) Location : 상태코드 3xx 에서 배움

 

 

 

3) Allow : 허용가능한 HTTP 메서드

   - 많이 안 씀

 

 

4) Retry-After

   - 유저 에이전트가 다음 요청을 하기까지 기다려야 하는 시간

   - 503 일때 서비스가 언제까지 불능인지 알려줌

 

 

 

 

-----------------------------------------------------------------------------------------------------------------------------------------

 

7) 인증

 

 

1) Authorization

   - value값은 인증 매커니즘에 따라 달라짐 ex) OAuth

 

 

 

 

2) WWW-Authenticate

   - 401 오류가 날 때 WWW-Authenticate 헤더 추가, 뒤의 값은 "인증하려면 이대로 만들어"

 

 

 

 

-----------------------------------------------------------------------------------------------------------------------------------------

 

 

8) 쿠키

 

 


 

 

# 쿠키 미사용 대안 : 쿼리 파라미터에 사용자 정보를 넣자

 

 

 

 

# 쿠키

 

 

 

 

 

 - 쿠키 받으면 그 서버에 요청 보낼 때마다 쿠키저장소를 뒤져서 쿠키값 무조건 꺼내서 전송

 - set-cookie : sessionid, 만료시간, 허용 도메인, 보안정보

   - ex) 첫 로그인때 홍길동 ->세션ID 로 변환 후 서버 DB에 저장, 클라이언트에 세션ID로 반환 -> 클라이언트는 요청마다               세션ID를 전송

 

 

   - expires 기간 되면 삭제, max-age : 초단위

 

 

 

   - 도메인으로 1차필터, Path로 2차 필터

 

 

 

 

 

 

 

 

 

 

 

출처 : 인프런 김영한님의 강의를 수강 후 정리한 내용입니다.

 

 

 

 

꾸준히 다시보자.

 

1. 220630

2. 220714

3. 220819

 

 

 

 

 

Recent Posts
Popular Posts
Recent Comments