HTTP 헤더와 요청 응답 분석
HTTP 헤더와 요청 응답 분석

HTTP Header란? 요청과 응답의 숨은 정보 이해하기

웹사이트나 API를 공부하다 보면 HTTP Header라는 말을 자주 보게 됩니다.

처음에는 이런 생각이 들 수 있습니다.
  • HTTP Header란 뭘까?
  • API 요청할 때 Header에는 왜 API Key를 넣을까?
  • Content-Type, Authorization, User-Agent는 어디에 쓰는 걸까?

결론부터 말하면, HTTP Header는 요청과 응답에 함께 전달되는 부가 정보입니다.

우리가 브라우저에서 웹사이트에 접속하거나, Postman으로 API 테스트를 하거나, Python requests로 API 호출을 할 때도 Header는 계속 사용됩니다. 겉으로 보이는 본문 데이터가 아니라, 서버와 클라이언트가 서로 이해하기 위해 주고받는 “숨은 설명서”에 가깝습니다.

예를 들어 식당에서 음식을 주문한다고 생각해보면, 주문 내용은 Body이고 Header는 “포장 여부, 알레르기 정보, 결제 방식, 손님 정보” 같은 추가 요청사항이라고 볼 수 있습니다.

이번 글에서는 HTTP Header란 무엇인지, HTTP 요청 헤더와 응답 헤더의 차이, API Header 사용법, Python requests Header 예제, 자주 발생하는 오류 해결법까지 초보자 기준으로 쉽게 정리해보겠습니다.


HTTP Header란?

HTTP Header는 클라이언트와 서버가 HTTP 요청과 응답을 주고받을 때 함께 전달하는 부가 정보입니다.

쉽게 말하면, HTTP Header = 요청과 응답에 붙는 설명 정보 입니다.

예를 들어 API 요청을 보낼 때 이런 정보가 Header에 들어갈 수 있습니다.

Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
User-Agent: Mozilla/5.0

각각의 의미는 다음과 같습니다.

Header 이름의미
Authorization인증 정보
Content-Type보내는 데이터 형식
User-Agent요청을 보낸 프로그램 정보
Accept받고 싶은 응답 형식
Cache-Control캐시 처리 방식

즉, HTTP Header는 서버가 요청을 올바르게 이해하도록 도와주는 역할을 합니다.

TIP

API 호출이 실패했을 때 URL이나 Body만 확인하는 경우가 많지만, 실제 원인은 Header 설정 문제인 경우도 많습니다.


HTTP Header는 왜 필요할까?

HTTP Header가 필요한 이유는 서버가 요청을 정확히 해석해야 하기 때문입니다.

예를 들어 같은 API 주소로 요청을 보내도 Header에 따라 결과가 달라질 수 있습니다.

예시 1. 로그인 인증

Authorization: Bearer abc123

이 Header가 있어야 서버는 “이 사용자가 로그인한 사용자구나”라고 판단할 수 있습니다.


예시 2. JSON 데이터 전송

Content-Type: application/json

이 Header가 있어야 서버는 “본문 데이터가 JSON 형식이구나”라고 이해합니다.


예시 3. 응답 형식 지정

Accept: application/json

클라이언트가 “나는 JSON 응답을 받고 싶다”고 서버에 알려주는 역할을 합니다.


HTTP 요청 Header와 응답 Header 차이

HTTP Header는 크게 두 가지로 나눌 수 있습니다.

구분설명
요청 Header클라이언트가 서버에 보내는 정보
응답 Header서버가 클라이언트에게 돌려주는 정보

요청 Header란?

요청 Header는 사용자가 서버에 요청을 보낼 때 함께 전달하는 정보입니다.

예를 들어 브라우저, Postman, Python requests가 서버에 요청할 때 이런 Header를 보냅니다.

GET /api/users HTTP/1.1
Host: example.com
Authorization: Bearer YOUR_TOKEN
Accept: application/json
주로 다음과 같은 목적에 사용됩니다.
  • 인증 정보 전달

  • 요청 데이터 형식 전달

  • 브라우저 정보 전달

  • 언어 설정 전달

  • 캐시 설정 전달


응답 Header란?

응답 Header는 서버가 클라이언트에게 응답을 돌려줄 때 함께 보내는 정보입니다.

HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-cache
Server: nginx
응답 Header에는 다음과 같은 정보가 들어갑니다. 
  • 응답 데이터 형식

  • 캐시 정책

  • 서버 정보

  • 쿠키 설정

  • 보안 정책

예를 들어 Content-Type: application/json이 있으면 응답 본문이 JSON 형식이라는 뜻입니다.


자주 보는 HTTP Header 종류

초보자가 먼저 알아두면 좋은 Header는 아래 정도입니다.

Header사용 위치설명
Authorization요청API Key, Bearer Token 인증
Content-Type요청/응답데이터 형식
Accept요청원하는 응답 형식
User-Agent요청브라우저 또는 프로그램 정보
Cookie요청저장된 쿠키 전달
Set-Cookie응답서버가 쿠키 저장 요청
Cache-Control요청/응답캐시 정책
Referer요청이전 페이지 정보
Origin요청요청 출처
CORS 관련 Header응답교차 출처 요청 허용 여부

특히 API 테스트에서는 Authorization, Content-Type, Accept를 자주 사용합니다.


HTTP Header 사용 방법 Step-by-Step

API 테스트나 개발 작업에서 Header를 사용하는 흐름은 보통 아래와 같습니다.


1. API 문서에서 Header 요구사항 확인

API 문서에는 보통 필요한 Header가 적혀 있습니다.

예시:

Authorization: Bearer YOUR_API_TOKEN
Content-Type: application/json

먼저 API 문서를 보고 어떤 Header가 필요한지 확인해야 합니다.


2. Postman에서 Header 입력

Postman에서는 Headers 탭에 Key와 Value를 입력하면 됩니다.

KEYVALUE
AuthorizationBearer YOUR_TOKEN
Content-Typeapplication/json

이후 Send 버튼을 눌러 API 호출 결과를 확인합니다.


3. Body 데이터 형식과 Header 맞추기

POST 요청에서 JSON 데이터를 보낸다면 Header도 JSON 형식으로 맞춰야 합니다.

Content-Type: application/json

만약 이 설정이 빠지면 서버가 데이터를 제대로 해석하지 못할 수 있습니다.


4. 응답 Header 확인

응답이 돌아오면 Status Code뿐만 아니라 Response Headers도 확인하는 것이 좋습니다.

확인할 항목 : 

  • Content-Type

  • Cache-Control

  • Set-Cookie

  • Server

  • Access-Control-Allow-Origin

TIP

CORS 오류가 발생할 때는 요청 Header보다 응답 Header의 Access-Control-Allow-Origin 설정을 확인해야 하는 경우가 많습니다.


Python requests로 HTTP Header 보내기

Python requests에서도 Header를 쉽게 추가할 수 있습니다.

GET 요청 Header 예제

import requests

url = "https://api.example.com/users"

headers = {
    "Authorization": "Bearer YOUR_TOKEN",
    "Accept": "application/json"
}

response = requests.get(url, headers=headers)

print(response.status_code)
print(response.json())

POST 요청 Header 예제

import requests

url = "https://api.example.com/posts"

headers = {
    "Authorization": "Bearer YOUR_TOKEN",
    "Content-Type": "application/json"
}

data = {
    "title": "HTTP Header란?",
    "content": "Header 테스트 예제입니다."
}

response = requests.post(url, headers=headers, json=data)

print(response.status_code)
print(response.json())

여기서 중요한 점은 json=data를 사용하면 requests가 자동으로 JSON 형식으로 데이터를 보냅니다.

하지만 API 문서에서 Header를 명확히 요구한다면 Content-Type을 함께 지정하는 것이 안전합니다.


기존 시리즈와 연결해서 이해하기

HTTP Header는 이전에 다룬 개념들과 모두 연결됩니다.

기존 글HTTP Header와 연결되는 부분
API란API 요청 시 Header로 인증 정보 전달
REST APIGET, POST 요청에서 Header 사용
Python requestsheaders 옵션으로 Header 전송
Postman 사용법Headers 탭에서 직접 테스트
HTTP 상태코드Header 오류가 401, 403, 415 등으로 이어짐
JSONContent-Type, Accept와 연결

즉, HTTP Header를 이해하면 API 호출 과정이 훨씬 명확해집니다.


HTTP Header Analyzer로 쉽게 확인하기

HTTP Header는 브라우저 개발자 도구나 Postman에서도 확인할 수 있지만, 간단하게 웹에서 확인하고 싶을 때는 전용 도구를 사용하는 것도 좋습니다.

win-j.com에서는 아래 유틸리티를 제공하고 있습니다.

HTTP Header Analyzer

네트워크 개발 도구 HTTP Header 분석기

HTTP 응답 헤더를 분석해 보안 헤더, 캐시 설정, CORS, CSP, HSTS 상태를 확인할 수 있는 무료 개발자 유틸리티입니다.

유틸리티 바로가기

이 도구를 사용하면 특정 URL의 HTTP Header 정보를 확인할 수 있습니다.

활용 예시:

  • 내 사이트 응답 Header 확인

  • Content-Type 확인

  • 서버 캐시 정책 확인

  • 보안 Header 점검

  • 리다이렉트 여부 확인

웹사이트 운영자라면 내 사이트가 어떤 Header를 반환하는지 한 번쯤 확인해보는 것을 추천합니다.


무료 vs 유료 비교

HTTP Header 자체는 비용이 드는 기능이 아닙니다.
다만 Header를 확인하거나 API 테스트를 하는 도구는 무료와 유료 기능이 나뉠 수 있습니다.

구분무료 사용유료 사용
브라우저 개발자 도구가능해당 없음
Postman 기본 테스트가능협업/자동화 강화
Header 분석 도구대부분 가능대량 검사, 모니터링
API 인증 테스트가능대량 검사, 모니터링
추천 대상개인, 초보자, 블로그 운영자팀 개발, 실무 모니터링

초보자나 개인 사이트 운영자라면 무료 도구만으로도 충분히 HTTP Header를 학습하고 점검할 수 있습니다.


자주 발생하는 오류 및 해결법

1. 401 Unauthorized

인증 Header가 없거나 잘못되었을 때 발생합니다.

확인할 것: 
  • Authorization Header가 있는지

  • Bearer 뒤에 공백이 있는지

  • API Key가 올바른지

  • 토큰이 만료되지 않았는지


2. 403 Forbidden

인증은 되었지만 권한이 없을 때 발생합니다.

확인할 것: 
  • API 사용 권한

  • 도메인 제한

  • IP 제한

  • 무료 플랜 제한


3. 415 Unsupported Media Type

보낸 데이터 형식을 서버가 지원하지 않을 때 발생합니다. 대부분 Content-Type 설정 문제입니다.

확인할 것:

Content-Type: application/json

4. CORS 오류

브라우저에서 다른 도메인의 API를 호출할 때 자주 발생합니다.

확인할 Header:

Access-Control-Allow-Origin

CORS는 클라이언트 코드만 고쳐서 해결되지 않는 경우가 많고, 서버 응답 Header 설정이 필요할 수 있습니다.


5. JSON 응답이 깨지거나 파싱되지 않는 문제

응답이 JSON이 아닌 HTML이나 텍스트일 수 있습니다.

확인할 것:
  • Response Header의 Content-Type

  • 실제 응답 Body

  • 상태코드


실전 활용 팁

1. API 오류가 나면 Header부터 확인하기

API Key를 넣었는데도 401이 나온다면 Header 이름이 다를 수 있습니다.

예:

Authorization: Bearer TOKEN

또는

X-API-KEY: TOKEN

API마다 요구하는 방식이 다르므로 문서를 반드시 확인해야 합니다.


2. Content-Type과 Body 형식을 맞추기

JSON을 보내면서 Content-Type이 빠져 있으면 서버가 데이터를 제대로 읽지 못할 수 있습니다.

POST 요청에서는 특히 중요합니다.


3. 보안 Header도 확인하기

웹사이트 운영자라면 다음 Header도 점검해보면 좋습니다.

  • Strict-Transport-Security

  • X-Frame-Options

  • Content-Security-Policy

  • X-Content-Type-Options

처음에는 어렵게 느껴질 수 있지만, 사이트 보안 점검에서 자주 등장하는 항목입니다.


4. 캐시 Header 확인하기

사이트가 수정되었는데도 이전 화면이 보인다면 캐시 Header와 관련이 있을 수 있습니다.

확인할 Header:
  • Cache-Control

  • ETag

  • Last-Modified


마무리

HTTP Header는 겉으로 바로 보이지 않지만 웹과 API 통신에서 매우 중요한 역할을 합니다.

핵심만 정리하면 다음과 같습니다.
  • HTTP Header는 요청과 응답의 부가 정보

  • Authorization은 인증 정보

  • Content-Type은 데이터 형식

  • Accept는 원하는 응답 형식

  • 응답 Header는 서버의 처리 결과와 정책 정보

  • API 오류 해결 시 Header 확인이 중요

API, REST API, Postman, Python requests를 공부하고 있다면 HTTP Header는 반드시 함께 이해해야 하는 개념입니다.

처음에는 어렵게 느껴질 수 있지만, 실제로 Postman에서 Header를 입력해보고 응답 Header를 확인해보면 “아, 서버와 클라이언트가 이런 정보를 주고받는구나” 하고 흐름이 보이기 시작합니다. 웹사이트 운영자라면 win-j.com의 HTTP Header Analyzer를 활용해 내 사이트의 Header 상태도 한 번 점검해보는 것을 추천합니다.