HTTP 헤더

Sin·2024년 7월 13일

HTTP 헤더 개요


HTTP 표현?

  • Content-Type : 데이터의 형식
Ex)
- text/html; charset=utf-8
- application/json
- image/png
  • Content-Encoding : 데이터의 압축방식
Ex)
- gzip
- deflate
- identity : 압축하지 않는다는 뜻.
  • Content-Language : 데이터의 자연언어
Ex)
- ko
- en
- en-US
  • Content-Length : 데이터의 길이
주의점 : Transfer-Encoding 을 사용하면 Content-Length 를 사용 하면 안됨.

표현 헤더는 전송(Request), 응답(Response) 둘다 사용.


협상

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

Request(요청)시에만 사용.

협상 우선순위
- Quality Values 값 사용 
  Ex) Accept-Language: ko-KR,ko;q=0.9,en-US;9=0.8,en;q=0.7
  
- 구체적인 것이 우선한다.
  Ex) text/*, text/plain, text/plain;format=flowed, */*
      1. text/plain;format=flowed
      2. text/plain
      3. text/*
      4. */*

- 구체적인 것을 기준으로 미디어 타입을 맞춘다. (위에 2가지를 모두 합한 형태)

전송 방식

  • 단순 전송 : 컨텐츠에 대한 길이를 알 수 있을 때 그 길이 만큼 정확히 한번에 전달.
  • 압축 전송 : Content-Encoding 을 추가 하여 압축하여 전송(압축 방식을 명세)
  • 분할 전송 : Transfer-Encoding : chunked 등을 추가하여 대용량 데이터를 분할 하여 전송하며 Content-Length 를 추가하면 안된다. (스트림 읽는 방식과 비슷한 것인가?)
  • 범위 전송 : 클라이언트는 Range 를 통해 길이를 전달하고 (Ex) Range: bytes=1001-2000)
    서버는 Content-Range 를 통해 받은 크기와 다음 받아야할 시작점을 전달 해 줌 (Ex) Content-Range: bytes 1001-2000 / 2000)

정보성 헤더 정보


특별한 정보

출처 김영한의 스프링 로드맵 - 모든 개발자를 위한 HTTP 웹 기본 지식

0개의 댓글