[HTTP] HTTP 헤더

헤일리의 개발 일지·2024년 4월 29일

HTTP 헤더

### 용도 - HTTP 전송에 필요한 모든 부가 정보 ex) 메시지 바디의 내용, 바디의 크기, 압축, 인증, 서버 정보 등..

분류 - RFC2616(과거)

  • General 헤더: 메시지 전체에 적용되는 정보
  • Request 헤더: 요청 정보
  • Response 헤더: 응답 정보
  • Entity 헤더: 엔티티 바디 정보. 엔티티 본문의 데이터를 해석할 수 있는 정보 제공

RFC723x 변화

  • 엔티티 -> Representation
  • Representation = representation Metadata + Representation Data
  • 표현 = 표현 메타데이터 + 표현 데이터

message body

  • 메시지 본문을 통해 표현 데이터 전달
  • 표현은 요청이나 응답에서 전달할 실제 데이터
  • 표현 헤더는 표현 데이터를 해석할 수 있는 정보 제공 ex) 데이터 유형, 길이, 압축 정보 등

표현

- Content-Type: 표현 데이터의 형식 - Content-Encoding: 표현 데이터의 압축 방식 - Content-Language: 표현 데이터의 자연 언어 - Content-Length: 표현 데이터의 길이

Content-Type

바디에 어떤 내용이 들어가는지.
ex) text/html, application/json, image/png

Content-Encoding

  • 표현 데이터를 압축하는데 사용함
  • 데이터를 읽는 쪽에서 인코딩 헤더의 정보로 압축 해제
    ex) gzip, deflate, identity

Content-Language

표현 데이터의 자연 언어를 표현
ex) ko, en, en-US

Content-Length

  • 바이트 단위
  • Transfer-Encoding을 사용하면 Content-Length를 사용하면 안됨

협상(콘텐츠 네고시에이션)

클라이언트가 서버한테 원하는 표현으로 달라고 요청

  • Accept: 클라이언트가 선호하는 미디어 타입 전달
  • Accept-Charset: 클라이언트가 선호하는 문자 인코딩
  • Accept-Encoding: 클라이언트가 선호하는 압축 인코딩
  • Accept-Language: 클라이언트가 선호하는 자연 언어

전송 방식

  • 단순 전송: Content에 대한 길이를 알 수 있을 때 사용
  • 압축 전송: Content-Encoding을 통해 어떤 방식으로 압축했는지 전달 필요
  • 분할 전송: 특정 크기의 chunk로 분할하여 보냄
  • 범위 전송: 특정 범위의 컨텐츠만 지정해서 받을 수 있음

일반 정보

Referer

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

User-Agent

  • 클라이언트의 애플리케이션 정보

Server

  • 요청을 처리하는 ORIGIN 서버의 소프트웨어 정보

Date

  • 메시지가 발생한 날짜와 시간

특별한 정보

Host

  • 요청한 호스트 정보(도메인)
  • 필수
  • 하나의 서버가 여러 도메인을 처리해야 할 때 구분해줌

Location

  • 3xx 응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 이동(리다이렉트)

Allow

  • 허용 가능한 HTTP 메서드

Retry-After

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

인증

Authorization

  • 클라이언트 인증 정보를 서버에 전달

WWW-Authenticate

  • 리소스 접근시 필요한 인증 방법 정의
  • 401 Unauthorized 응답과 함께 사용

쿠키

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

0개의 댓글