HTTP 헤더

Sangyeon·2021년 2월 11일
0

Web

목록 보기
6/7

HTTP 요청/응답 메시지 내 HTTP 전송에 필요한 모든 부가정보를 담고 있는 헤더에 대한 포스팅 입니다.

이 글은 RFC7230 기준으로 헤더를 분류하였습니다.
RFC2616->RFC3730 로 개정될 때 '엔티티'->'표현' 으로 명칭이 변경되었다고 합니다.
명칭뿐만 아니라 헤더 분류도 달라졌으니 참고해주세요.

표현 헤더(Representation Header)

표현 헤더는 표현 메타데이터페이로드로 구분됩니다.
표현 헤더는 HTTP 요청 또는 응답 시에 모두 사용될 수 있습니다.

표현 메타데이터(Representation Metadata)

자주 사용되는 표현 메타데이터는 아래와 같습니다.

Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Content-Language: ko-KR

Content-Type 헤더

표현 데이터의 형식을 의미합니다.

Content-Type: text/html; charset=utf-8

값 예시

  • text/html; charset=utf-8
  • application/json
  • image/png

Content-Encoding 헤더

표현 데이터의 압축 방식으로, 데이터를 읽는 쪽에서 이 정보를 바탕으로 압축 해제를 합니다.

Content-Encoding: gzip

값 예시

  • gzip
  • deflate
  • identity (압축하지 않음을 의미합니다.)

Content-Language 헤더

표현 데이터의 자연 언어를 의미합니다.

Content-Language: ko-KR

값 예시

  • ko
  • ko-KR
  • en
  • en-US

페이로드(Payload)

'페이로드'는 전송되는 데이터 자체를 의미합니다.

Content-Length 헤더

표현 데이터의 길이를 의미합니다.(단위는 바이트 입니다.)

Content-Length: 3753

Content-Range 헤더

요청 헤더에 Range 헤더가 포함된 경우(데이터를 나눠서 보내달라는 요청), 그에 대한 응답에 사용됩니다.

Content-Range: bytes 200-1000/67589

Transfer-Encoding 헤더

데이터를 분할하여 전송 시 사용합니다.

Transfer-Encoding: chunked

7\r\n
Mozilla\r\n
11\r\n
Developer Network\r\n
0\r\n
\r\n

요청 헤더(Request Header)

HTTP 요청 시에 사용되는 헤더에 관한 내용입니다.

Control

Host 헤더

요청한 호스트 정보(도메인)로, HTTP 요청 헤더에서 필수로 사용됩니다.

Range 헤더

데이터를 나눠서 보내달라고 요청할 시 사용됩니다.
이 요청에 대한 응답 헤더에서는 Content-Range 헤더가 사용됩니다.

Range: bytes=200-1000

콘텐츠 협상(Content Negotiation)

Accept 헤더

클라이언트가 선호하는 미디어 타입을 의미합니다.

구체적인 값을 우선시합니다.(*/* 보다는 text/*, text/* 보다는 text/plain)

Accept-Charset 헤더

클라이언트가 선호하는 문자 인코딩을 의미합니다.

Accept-Encoding 헤더

클라이언트가 선호하는 압축 인코딩을 의미합니다.

Accept-Language 헤더

클라이언트가 선호하는 자연 언어를 의미합니다.

서버가 다중 언어 지원하는 경우, 이 정보를 바탕으로 Content-Language를 내려줄 수 있습니다.
만약 Accept-Language 언어가 서버가 지원하지 않는 언어라면, 서버에서 기본 언어를 내려줍니다.

Quality Values(q)값에 따라 클라이언트가 선호하는 1순위 언어를 서버가 지원하지 않는 경우, 그 다음 순위 언어로 내려줄 수 있습니다.(q값이 생략되어있으면 값은 1입니다.)

예시

Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
  • 1순위 : ko-KR (q=1)
  • 2순위 : ko (q=0.9)
  • 3순위 : en-US (q=0.8)
  • 4순위 : en (q=0.7)

Context

From 헤더

User-Agent의 이메일 정보(검색 엔진이 아니면, 일반적으로 잘 사용되지 않습니다.)

Referer 헤더

현재 요청된 페이지의 이전 웹 페이지 주소로, HTTP 요청 헤더에서 사용됩니다.
이 정보를 바탕으로 유입 경로를 분석할 수 있습니다.

User-Agent 헤더

User-Agent 애플리케이션 정보로, HTTP 요청 헤더에서 사용됩니다.
이 정보를 바탕으로 사용자 환경에 대해 분석할 수 있으며, 장애 발생 시 어떤 환경에서 발생하는지 파악할 수 있습니다.

응답 헤더(Response Header)

HTTP 응답 시에 사용되는 헤더에 관한 내용 입니다.

Control

Date 헤더

메시지가 생성된 날짜를 의미합니다.

Date: Thu, 08 Dec 2022 04:07:45 GMT

Location 헤더

주로 페이지 리다이렉션에서 사용되는 헤더 입니다.
HTTP 상태코드 3xx 응답을 받으면, Location 헤더를 찾아 해당 헤더가 존재할 경우, Location 헤더에 담긴 URL로 자동으로 리다이렉트합니다.

Retry-After 헤더

클라이언트가 다음 요청을 하기까지 기다려야 하는 시간으로, HTTP 상태코드 503 (Service Unavailable) 응답 헤더에서 사용됩니다.

Retry-After: Wed, 21 Oct 2015 07:28:00 GMT  # 날짜 표기
Retry-After: 120  # 초단위 표기

Context

Allow 헤더

허용 가능한 HTTP 메서드로, HTTP 상태코드 405 (Method Not Allowed) 응답 헤더에서 사용됩니다.

아래 예시는 POST 요청을 허용하지 않는 경우 입니다.

Allow: GET, HEAD, PUT

Server 헤더

요청을 처리하는 origin 서버의 소프트웨어 정보를 의미합니다.

아래 예시는 구글 사이트 접근했을 시의 Server 헤더 값입니다.

Server: gws

Reference

profile
I'm a constant learner.

0개의 댓글