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 방어)
'HTTP' 카테고리의 다른 글
[완강 인증] 인프런 김영한님의 "모든 개발자를 위한 HTTP 웹 기본 지식" 강의를 마치며 (5) | 2025.07.23 |
---|---|
[HTTP 완전 정복 시리즈] 9편 - HTTP 헤더2: 캐시와 조건부 요청 (0) | 2025.07.23 |
[HTTP 완전 정복 시리즈] 7편 - HTTP 상태코드 완벽 정리 (0) | 2025.07.22 |
[HTTP 완전 정복 시리즈] 6편 - HTTP 메서드 활용법과 설계 전략 (5) | 2025.07.22 |
[HTTP 완전 정복 시리즈] 5편 - HTTP 메서드와 상태코드 제대로 이해하기 (0) | 2025.07.22 |