http web development status codes headers api caching security

HTTP 상태 코드 & 응답 헤더: 완전 참조 가이드

HTTP 상태 코드(1xx-5xx) 및 핵심 응답 헤더에 대한 종합 참조서. 웹 애플리케이션 디버깅, 가이드입니다.

2026-04-12

HTTP 상태 코드 & 응답 헤더: 완전 참조 가이드

HTTP 상태 코드와 헤더를 이해하는 것은 웹 개발자, SEO 전문가 및 시스템 관리자에게 필수적입니다. 이 참조 가이드는 현대 웹 통신에서 사용되는 가장 중요한 상태 코드와 헤더를 다룹니다.

1. HTTP 상태 코드 빠른 참조

상태 코드는 첫 번째 숫자에 따라 다섯 가지 클래스로 분류됩니다.

1xx: 정보 제공

  • 101 Switching Protocols: 서버가 프로토콜 전환에 동의함 (예: WebSocket으로 업그레이드).

2xx: 성공

  • 200 OK: 요청이 성공함.
  • 201 Created: 요청이 성공했으며 새로운 리소스가 생성됨.
  • 204 No Content: 요청은 성공했으나 응답할 본문 내용이 없음.

3xx: 리다이렉션

  • 301 Moved Permanently: 리소스가 영구적으로 새로운 URL로 이동함.
  • 302 Found: 리소스가 일시적으로 다른 URL에 있음.
  • 304 Not Modified: 캐싱용; 리소스가 변경되지 않았음을 나타냄.

4xx: 클라이언트 오류

  • 400 Bad Request: 잘못된 문법 등으로 인해 서버가 요청을 처리할 수 없음.
  • 401 Unauthorized: 인증이 필요함.
  • 403 Forbidden: 서버가 요청을 이해했으나 승인을 거부함.
  • 404 Not Found: 요청한 리소스를 찾을 수 없음.
  • 429 Too Many Requests: 지정된 시간 동안 너무 많은 요청을 보냄 (속도 제한).

5xx: 서버 오류

  • 500 Internal Server Error: 서버에서 예기치 않은 오류가 발생함.
  • 502 Bad Gateway: 게이트웨이 또는 프록시 서버가 업스트림 서버로부터 잘못된 응답을 받음.
  • 503 Service Unavailable: 서버가 현재 요청을 처리할 수 없음 (유지보수 또는 과부하).
  • 504 Gateway Timeout: 업스트림 서버로부터 제때 응답을 받지 못함.

2. 필수 HTTP 응답 헤더

헤더는 응답 또는 서버에 대한 메타데이터를 제공합니다.

캐시 제어: Cache-Control

브라우저 및 중간 캐시(CDN 등)가 리소스를 저장하는 방식을 제어합니다.

  • public, max-age=31536000, immutable: 버전이 지정된 정적 자산(JS, CSS)에 이상적임.
  • no-store: 아무것도 캐시하지 않음 (민감한 데이터용).
  • no-cache: 캐시를 사용하기 전에 서버에서 재검증을 거쳐야 함.

보안: Strict-Transport-Security (HSTS)

브라우저에 HTTPS를 통해서만 사이트에 접속하도록 지시합니다.

  • 예: max-age=63072000; includeSubDomains; preload

세션 관리: Set-Cookie

서버에서 사용자 에이전트로 쿠키를 전송합니다.

  • 예: id=abc; Max-Age=3600; Secure; HttpOnly; SameSite=Lax
    • HttpOnly: 자바스크립트의 쿠키 접근을 방지 (XSS 완화).
    • Secure: HTTPS를 통해서만 쿠키를 전송.
    • SameSite: 교차 사이트 쿠키 동작 제어 (Lax, Strict 또는 None).

콘텐츠 협상: Content-Type & Accept-Encoding

  • Content-Type: 리소스의 미디어 유형을 나타냄 (예: text/html, application/json).
  • Accept-Encoding: 클라이언트가 지원하는 압축 방식을 서버에 알림 (예: gzip, br).

3. 비교표: 301 vs. 302 리다이렉션

기능 301 영구 이동 302 임시 이동
SEO 영향 링크 자산(PageRank) 전달 링크 자산 전달하지 않음
브라우저 캐싱 기본적으로 캐시됨 기본적으로 캐시되지 않음
주요 사례 사이트 이전, URL 영구 변경 유지보수, 일시적인 프로모션

FAQ: 일반적인 HTTP 문제

Q: 로그인했는데도 403 Forbidden 오류가 발생하는 이유는 무엇인가요?

A: 사용자에게 해당 리소스에 대한 특정 권한/역할이 없거나, CSRF 토큰이 일치하지 않는 경우에 발생합니다.

Q: 401과 403의 차이점은 무엇인가요?

A: 401 Unauthorized는 "당신이 누구인지 모르겠다"(로그인 필요)는 뜻입니다. 403 Forbidden은 "당신이 누구인지 알지만, 접근이 허용되지 않는다"는 뜻입니다.

Q: 502 Bad Gateway를 어떻게 해결하나요?

A: 대개 서버 측 문제입니다. 백엔드 애플리케이션(Node.js, Python 등)이 실행 중인지, 리버스 프록시(Nginx/Apache)가 올바른 위치를 가리키고 있는지 확인하세요.

관련 도구

  • HTTP 헤더 분석기: 모든 URL의 헤더를 검사하고 분석합니다.
  • Cache-Control 빌더: 최적화된 캐시 정책을 생성합니다.
  • 상태 코드 확인 도구: API 또는 웹사이트의 응답 코드를 검증합니다.