HTTP 헤더

최주영·2024년 4월 1일
0

HTTP 웹 기본 지식

목록 보기
3/3
post-thumbnail

HTTP 메시지 = HTTP 헤더 + HTTP 바디

✅ HTTP 헤더의 용도

  • HTTP 전송에 필요한 모든 부가정보가 담겨있음
  • EX) 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보 등등

Content-Type : 표현 데이터의 형식
-> ex) text/html; charset=utf-8 application/json

Content-Encoding : 표현 데이터의 압축 방식
-> ex) gzip

Content-Language : 표현 데이터의 자연 언어
-> ex) ko en en-US

Content-Length : 표현 데이터의 길이
-> ex) 5 와 같은 정수

✅ HTTP BODY

  • 요청에 대한 실제 메시지/내용을 전송


✅ HTTP 전송방식
단순전송, 압축전송, 분할 전송, 범위 전송


✅ 일반 정보

From : 유저 에이전트의 이메일 정보
-> 검색 엔진 같은 곳에서, 주로 사용, 요청에서 사용

Referer : 이전 웹 페이지 주소
-> 현재 요청된 페이지의 이전 웹 페이지 주소
-> Referer를 사용해서 유입 경로 분석 가능
-> 요청에서 사용

User-Agent : 유저 에이전트 애플리케이션 정보
-> Mozilla/5.0(Intel Mac OS X 10_15_7) AppleWebKit/537.36(KHTML,Gecko) Chrome/86.0 Safari
-> 클라이언트의 어플리케이션 정보(웹 브라우저 정보)
-> 통계 정보
-> 어떤 종류의 브라우저에서 장애가 발생하는지 파악 가능
-> 요청에서 사용

Server : 요청을 처리하는 ORIGIN 서버의 소프트웨어 정보
-> ex) Apache/2.2.22
-> 응답에서 사용

Date : 메시지가 발생한 날짜와 시간
-> ex) Tue, 15 Nov 1994 08:12:31 GMT
-> 응답에서 사용


✅ 특별한 정보
Host : 요청한 호스트 정보(도메인)
-> 요청에서 사용
-> 필수 값임
-> 하나의 IP 주소에 여러 도메인이 적용되어 있을 때 (Host 값으로 각 도메인을 구분해줌)

Location : 페이지 리다이렉션
Allow : 허용 가능한 HTTP 메소드
Retry-After : 유저 에이전트가 다음 요청을 하기까지 기다려야 하는 시간


✅ 인증 정보
Authorization : 클라이언트 인증 정보를 서버에 전달
WWW-Authenticate : 리소스 접근시 필요한 인증 방법 정의


✅ 캐시 장점

  • 캐시로 인해 캐시가 유효한 시간동안 네트워크를 사용하지 않아도 됨
    -> ex) 들어갔었던 웹사이트를 다시 들어가면 빠른 속도로 들어가짐 (캐시가 적용되어있어서)
  • 비싼 네트워크 사용량을 줄일 수 있음
  • 브라우저 로딩 속도가 매우 빠르다
  • 빠른 사용자 경험

✅ 캐시 제어 헤더
Cache-Control, Pragma, Expires 가 있지만 Cache-Control의 캐시 만료일 지정이 가장 유연함

  • Cache-Control (캐시 지시어)
    -> max-age 설정 (캐시 유효 시간, 초단위)
    -> no-cache 설정 (데이터는 캐시해도 되지만, 항상 원서버에 검증하고 사용)
    -> no-store 설정 (데이터에 민감한 정보가 있으므로 저장하면 안됨)
    -> public 설정 (응답이 public 캐시에 저장되어도 됨)
    -> private 설정 (응답이 해당 사용자만을 위한 것, 기본값)
    -> s-maxage 설정 (프록시 캐시에만 적용되는 max-age)

검증 헤더

  • ETag, Last-Modified

조건부 요청 헤더

  • If-Match, If-None-Match -> ETag 값 사용
  • If-Modified-Since, If-Unmodified-Since -> Last-Modified 값 사용

프록시, 프록시 서버

프록시 는 클라이언트와 서버 사이에 대리로 통신을 수행하는 것이며, 그 중계 기능을 하는 서버를
프록시 서버 라고 한다.

여러 클라이언트가 미국에 있는 원 서버에 있는 특정한 데이터가 필요한 상황이라고 가정!

정보를 가져오기 위해서는 많은 시간이 소요된다

하지만 원 서버한국 클라이언트의 중간에 위치한 한국의 캐시 서버가 있다면 시간을 줄일 수 있다.

여기서 한국의 캐시 서버 = 프록시 캐시 서버

여러 사람이 찾은 자료일수록 캐시에 이미 등록되어 있으면 빠른 속도로 데이터를 가져올 수 있다

국내에 프록시 캐시 서버 가 있기 때문에 외국의 원 서버 에서 데이터를 가져오는 것보다 빠르다

클라이언트에서 사용하고 저장하는 캐시 = private 캐시
프록시 캐시 = public 캐시


✅ 캐시 무효화 지시 방법
Cache-Control: no-cache
Cache-Control: no-store
Cache-Control: must-revaildate
Pragma: no-cache

  • no-cachemust-revaildate 의 차이점

만약 프록시 캐시 서버와 원 서버 사이에서 네트워크 단절이 일어나 접근이 불가능하다면, no-cache에서 오류가 아닌 오래된 데이터라도 보여주자라는 개념으로 200OK 을 응답으로 내보낸다.

must-revaildate 는 만약 접급이 불가능 하다면 504(Gateway Timeout)라는 오류를 내보낸다. 중요한 정보를 사용할 경우 예전 데이터를 보여준다면 큰 문제가 발생하기 때문에 이러한 경우는 must-revaildate 를 적용

profile
우측 상단 햇님모양 클릭하셔서 무조건 야간모드로 봐주세요!!

0개의 댓글