Spring/HTTP

HTTP 헤더

ummchicken 2022. 12. 19. 23:17

강의 : 모든 개발자를 위한 HTTP 웹 기본 지식


HTTP 헤더1 - 일반 헤더

0. HTTP 헤더 용도

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



1. 표현

  • Content-Type: 표현 데이터의 형식 (HTML, JSON 등등...)
  • Content-Encoding: 표현 데이터의 압축 방식
  • Content-Language: 표현 데이터의 자연 언어 (한국어, 영어 등등...)
  • Content-Length: 표현 데이터의 길이
  • 표현 헤더는 전송, 응답 둘다 사용

1 - 1. Content-Type

  • 미디어 타입, 문자 인코딩
  • 예)
    • text/html; charset=utf-8
    • application/json
    • image/png


2. 쿠키

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

2 - 0. Stateless

  • HTTP는 무상태(Stateless) 프로토콜
  • 클라이언트와 서버가 요청과 응답을 주고 받으면 연결이 끊어짐
  • 클라이언트가 다시 요청하면 서버는 이전 요청을 기억하지 못함
  • 클라이언트와 서버는 서로 상태를 유지하지 않음

2 - 1. 모든 요청에 정보를 넘기는 문제

  • 모든 요청에 사용자 정보가 포함되도록 개발 해야함
  • 브라우저를 완전히 종료하고 다시 열면?

2 - 2. 쿠키

모든 요청에 쿠키 정보 자동 포함


HTTP 헤더2 - 캐시와 조건부 요청

0. 캐시 기본 동작

캐시 적용

  • 캐시 덕분에 캐시 가능 시간동안 네트워크를 사용하지 않아도 됨
  • 비싼 네트워크 사용량을 줄일 수 있음
  • 브라우저 로딩 속도가 매우 빠름
  • 빠른 사용자 경험

캐시 시간 초과

  • 캐시 유효 시간이 초과하면, 서버를 통해 데이터를 다시 조회하고, 캐시를 갱신함
  • 이때 다시 네트워크 다운로드가 발생함


1. 검증 헤더와 조건부 요청

1 - 0. 캐시 시간 초과

  • 캐시 만료후에도 서버에서 데이터를 변경하지 않음
  • 생각해보면 데이터를 전송하는 대신에 저장해 두었던 캐시를 재사용 할 수 있음
  • 단 클라이언트의 데이터와 서버의 데이터가 같다는 사실을 확인할 수 있는 방법 필요

1 - 1. 검증 헤더와 조건부 요청

  • 캐시 유효 시간이 초과해도, 서버의 데이터가 갱신되지 않으면
  • 304 Not Modified + 헤더 메타 정보만 응답(바디X)
  • 클라이언트는 서버가 보낸 응답 헤더 정보로 캐시의 메타 정보를 갱신
  • 클라이언트는 캐시에 저장되어 있는 데이터 재활용
  • 결과적으로 네트워크 다운로드가 발생하지만 용량이 적은 헤더 정보만 다운로드
  • 매우 실용적인 해결책


2. 캐시와 조건부 요청 헤더

2 - 1. Cache-Control

캐시 지시어(directives)


  • Cache-Control: max-age
    • 캐시 유효 시간, 초 단위
  • Cache-Control: no-cache
    • 데이터는 캐시해도 되지만, 항상 원(origin) 서버에 검증하고 사용
  • Cache-Control: no-store
    • 데이터에 민감한 정보가 있으므로 저장하면 안됨
    (메모리에서 사용하고 최대한 빨리 삭제)

'Spring > HTTP' 카테고리의 다른 글

HTTP 상태코드  (0) 2022.12.19
HTTP 메서드 활용  (0) 2022.12.19
HTTP 웹 기본 지식, 메서드  (0) 2022.12.19