HTTP 헤더

WAS·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개의 댓글