💠기타/컴퓨터 과학 (CS)

[HTTP] HTTP 헤더는 어떠한 것들이 있을까?

2025. 3. 4. 22:29
728x90

 

HTTP 헤더

표현 헤더

- `Content-Type` : 표현 데이터의 형식

- `Content-Encoding` : 표현 데이터의 압축 방식

- `Content-Language` : 표현 데이터의 자연 언어

- `Content-Length` : 표현 데이터의 길이 (byte 단위)

 

표현 헤더는 `요청`/`응답`에 둘 다 사용

 

> 참고 <

Transfer-Encoding(전송 코딩)을 사용하면 Content-Length 를 사용하면 안 된다.

 

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

클라이언트가 선호하는 표현 요청

 

- `Accept` : 클라이언트가 선호하는 미디어 타입 전달

- `Accept-Charset` : 클라이언트가 선호하는 문자 인코딩

- `Accept-Encoding` : 클라이언트가 선호하는 압축 인코딩

- `Accept-Language` : 클라이언트가 선호하는 자연 언어

 

협상 헤더는 `요청`에만 사용

 

Quality Values(q) 값

- 0 ~ 1, 클수록/구체적일수록 높은 우선순위

- 생략하면 1

- `Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7` (ko-KR > ko > en-US > en)

- `Accept: text/*, text/plain, text/plain;format=flowed, */*` (text/plain;format=flowed > text/plain > text/* > */*)

 

전송 방식 헤더

- `단순 전송`

HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423

<html>
  <body>...</body>
</html>

 

- `압축 전송` 

HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Encoding: gzip
Content-Length: 521

lkj123kljoiasudlkjaweioluywlnfdo912u34ljko98udjkl

 

- `분할 전송`

  : Content-Lenght 사용 X

HTTP/1.1 200 OK
Content-Type: text/plain
Transfer-Encoding: chunked

5
Hello
5
World
0
\r\n

 

- `범위 전송`

  : 대용량 파일 다운로드 시 특정 부분만 요청할 때 사용

HTTP/1.1 200 OK
Content-Type: text/plain
Content-Range: bytes 1001-2000 / 2000

qweqwe1l2iu3019u2oehj1987askjh3q98y

 

일반 정보 헤더

- `From` 

  : 유저 에이전트의 이메일 정보

  : 검색 엔진에서 주로 사용

  : 요청에서 사용

  : 일반적으로 사용 X

- `Referer`

  : 현재요청된 페이지의 이전 웹 페이지 주소

  : 유입 경로 분석 가능

  : 요청에서 사용

  (Referrer 의 오타이다.)

- `User-Agent`

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

  : 통계 정보

  : 어떤 브라우저에서 장애가 발생하는지 파악

  : 요청에서 사용

- `Server`

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

  : 응답에서 사용

- `Date`

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

  : 응답에서 사용

 

> 참고 <

ORIGIN 서버 : 중간의 프록시 서버(캐시 서버)가 아닌 원래의 진짜 서버

 

특별한 정보 헤더

- `Host`

  : 필수, 하나의 서버가 여러 도메인을 처리해야 할 때 

  : 요청에서 사용

- `Location`

  : 리다이렉션시 해당 위치로 자동 이동

  : 응답에서 사용

- `Allow`

  : 허용 가능한 HTTP 메서드

  : 405 (Method Not Allowed) 에서 응답에 포함해야 함

  : 응답에서 사용

- `Retry-After`

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

  : 503 (Sevice Unavailable) 서비스가 언제까지 복구될지 알려줌

  : 날짜 표기, 초단위 표기

  : 응답에서 사용

 

인증 헤더

- `Authorization`

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

  : 요청에서 사용

- `WWW-Authenticate`

  : 리소스 접근 시 필요한 인증 방법을 안내

  : 401 (Unauthorized) 응답과 함께 사용

  : 응답에서 사용

 

쿠키 헤더

- `Set-Cookie`

  : 서버에서 클라이언트로 쿠키 전달

  : 응답에서 사용

- `Cookie`

  : 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청 시 서버로 전달

  : 요청에서 사용

 

캐시 - 검증 헤더

- `Last-Modified`

  : 서버가 데이터 최종 수정일을 클라이언트에게 전달

  : 응답에서 사용

- `If-Modified-Since` / `If-Unmodified-Since`

  : 클라이언트가 브라우저 캐시에 있는 데이터 최종 수정일을 서버에게 전달

  : 요청에서 사용

- `ETag`

  : 서버가 데이터의 Hash 값을 클라이언트에게 전달

  : 응답에서 사용

- `If-None-Match` / `If-Match`

  : 클라이언트가 브라우저 캐시에 있는 ETag 값을 서버에게 전달

  : 요청에서 사용

 

캐시 - 제어 헤더

- `Cache-Control`

  : 캐시 동작을 제어하는 지시어 제공

  : 응답에서 사용

 

> 참고 <

- 쿠키와 세션에 대한 자세한 내용은 다음글 에 있다.

 

 

 

 

 

 

 

 

 

출처 | HTTP 웹 기본 지식(김영한) - 인프런

728x90