HTTP

[HTTP 완전 정복 시리즈] 8편 - HTTP 헤더1: 일반 헤더

dev-nadan 2025. 7. 23. 14:02

HTTP 메시지에서 중요한 역할을 하는 부분이 바로 '헤더'다. 이번 포스팅에서는 일반 헤더를 중심으로, 클라이언트와 서버가 어떻게 정보를 교환하는지를 알아본다.


1. 표현 헤더란?

  • HTTP에서는 데이터를 직접 전달하는 게 아니라 ‘표현’을 전달한다.
  • 예를 들어 회원 정보를 HTML 형식으로 응답하면 HTML로 표현한 것이다.
  • DB에 저장된 원시 데이터는 JSON이나 HTML 등 다양한 표현으로 변환되어 전송된다.

2. 콘텐츠 인코딩

  • 서버는 데이터를 압축해서 전송할 수 있다 (예: gzip).
  • 이때 Content-Encoding 헤더로 압축 방식을 클라이언트에게 알려줘야 한다.
  • identity는 압축하지 않았다는 뜻이다.

3. 콘텐츠 협상 (Content Negotiation)

  • 클라이언트는 서버에 원하는 콘텐츠 형태를 요청할 수 있다.
  • 대표적인 요청 헤더:
    • Accept: 원하는 미디어 타입 (예: text/html)
    • Accept-Encoding: 압축 방식 (예: gzip)
    • Accept-Language: 선호 언어 (예: ko-KR)
  • 우선순위를 부여할 수 있고 (예: q=0.9), 구체적인 언어 설정이 우선 적용된다.

4. 전송 방식

  • Content-Length: 콘텐츠 전체 길이를 명시
  • Transfer-Encoding: chunked: 콘텐츠를 덩어리로 나눠서 전송, 길이 미리 모를 때 사용
  • chunked 방식은 대용량 데이터를 스트리밍처럼 전송할 수 있어 효율적

5. 정보성 일반 헤더

  • Referer: 이전 페이지 주소, 유입 경로 분석에 사용
  • User-Agent: 클라이언트 브라우저/OS 정보, 버그 분석 및 통계 수집에 유용

6. 호스트 구분 - Host 헤더

  • 하나의 서버(IP)에서 여러 도메인을 운영할 때, 어떤 도메인 요청인지 구분 필요
  • Host 헤더는 반드시 포함되어야 하며, 가상 호스팅 환경에서는 필수다

7. 상태 유지를 위한 쿠키

  • HTTP는 기본적으로 상태를 저장하지 않음(Stateless).
  • 로그인 정보를 매 요청마다 기억시키기 위해 쿠키 사용
  • 서버는 응답에 Set-Cookie를 보내고, 브라우저는 이후 요청에 자동으로 Cookie 헤더를 포함
  • 세션 쿠키(브라우저 종료 시 삭제), 영속 쿠키(만료일 지정)로 나뉜다

8. 쿠키 보안 옵션

  • Secure: HTTPS에서만 쿠키 전송
  • HttpOnly: JavaScript로 접근 불가
  • SameSite: 교차 사이트 요청 방지 (XSRF 방어)