티스토리 뷰
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
'기타' 카테고리의 다른 글
Kafka Connect의 구성(config) 백업 (0) | 2025.04.18 |
---|---|
Apache APISIX의 환경 설정값을 백업 (0) | 2025.04.18 |
서비스 기획 vs 개발 기획 비교 (0) | 2025.04.18 |
개발 기획이란? (0) | 2025.04.18 |
서비스 기획이란? (0) | 2025.04.18 |