기타

HTTP 헤더란?

ipxy 2025. 4. 18. 12:30
728x90

 

 

✅ 1. 헤더란 무엇인가?

HTTP 헤더(Header)는 클라이언트와 서버 간의 통신 시, 요청(Request) 또는 응답(Response)에 메타데이터(Metadata)를 포함하기 위한 필드입니다.

🧠 쉽게 말해:

  • 본문(Body)이 실질적인 데이터를 담는 곳이라면,
  • 헤더(Header)는 "이 데이터를 어떻게 처리해야 하는지", "누구의 요청인지", "형식은 무엇인지" 등의 설명서 역할을 합니다.

✅ 2. 헤더의 위치

HTTP 메시지는 아래처럼 구성됩니다:

요청/응답 라인
헤더
<빈 줄>
바디

📌 예시: HTTP 요청

POST /login HTTP/1.1
Host: example.com
Content-Type: application/json
Authorization: Bearer eyJhbGciOi...

{
  "username": "admin",
  "password": "1234"
}

✅ 3. 헤더의 구성

  • 각 헤더는 "키: 값"의 쌍으로 이루어짐
  • 대소문자 구분하지 않음 (하지만 관례적으로 - 포함하여 Title Case 사용)

예:

Content-Type: application/json
X-Tenant-ID: shopA

✅ 4. 헤더의 분류

📌 A. 표준 헤더 (RFC 정의)

💡 요청(Request) 전용

헤더 설명
Host 요청 도메인 (가상호스팅 시 구분용)
Content-Type 보낸 데이터의 타입 (application/json, text/html)
Content-Length 바디의 바이트 길이
Accept 응답에서 받고 싶은 데이터 타입
Authorization 인증 정보 (Bearer, Basic, API Key)
User-Agent 클라이언트 정보 (브라우저, 앱 등)
Referer 이전 페이지 주소 (보안/분석용)

💡 응답(Response) 전용

헤더 설명
Content-Type 응답 데이터 타입
Set-Cookie 클라이언트에 쿠키 저장
Cache-Control 캐시 제어 (no-cache, max-age)
Location 리디렉션 위치 (301, 302)
Content-Disposition 파일 다운로드 시 파일 이름 설정 등

📌 B. 커스텀 헤더 (사용자 정의)

  • X- 접두사를 붙여서 시스템, 서비스, 테넌시 등을 표현
  • 예시:

 

헤더  설명
X-Tenant-ID SaaS 멀티 테넌시 구분
X-Request-ID 트래킹용 UUID
X-User-Role 권한 (admin, viewer)
X-Client-Version 클라이언트 앱 버전 정보

✅ 5. 헤더의 주요 사용 목적

목적 설명 예시
✅ 인증 API 키, JWT, 세션 등 Authorization: Bearer ...
✅ 콘텐츠 형식 바디 데이터 포맷 명시 Content-Type: application/json
✅ 응답 타입 지정 어떤 형식으로 응답받고 싶은지 Accept: application/json
✅ 클라이언트 정보 디바이스나 브라우저 구분 User-Agent: Mozilla...
✅ 트래픽 추적 로깅/디버깅을 위한 식별자 X-Request-ID: UUID
✅ 캐시 정책 브라우저나 CDN 캐싱 제어 Cache-Control: no-store
✅ 다국어 지원 클라이언트 언어 지정 Accept-Language: ko-KR
✅ 리전/테넌시 정보 멀티 테넌시 시스템 식별 X-Tenant-ID: tenantA

✅ 6. 실전 팁

☑️ 표준 헤더는 최대한 준수

  • 인증: Authorization
  • 포맷: Content-Type, Accept
  • 응답 제어: Cache-Control, ETag

☑️ 커스텀 헤더는 X- 또는 네임스페이스 접두어 사용

예: X-MyCompany-Feature-Flag: enabled

☑️ 민감 정보는 바디에, 인증/식별은 헤더에

  • 사용자 비밀번호, 개인정보: 바디
  • API 키, 토큰, 사용자 ID: 헤더

 

728x90