liminfo

HTTP Header Reference

HTTP 요청/응답 헤더 레퍼런스 - 보안, 캐시, CORS 등

28개 결과

HTTP Header Reference 소개

HTTP 헤더 레퍼런스는 현대 웹 개발에서 사용되는 가장 중요한 HTTP 요청 및 응답 헤더를 검색할 수 있는 빠른 참조 도구입니다. 28개의 헤더를 인증, 캐시, 콘텐츠, CORS, 보안, 쿠키, 기타의 일곱 가지 기능 카테고리로 정리하여 웹 개발자, 백엔드 엔지니어, DevOps 팀이 RFC 문서를 참조하지 않고도 올바른 헤더 이름, 구문, 실제 예제를 즉시 찾을 수 있습니다.

백엔드 개발자들은 Cache-Control의 max-age와 public/private 지시어 설정, ETag와 If-None-Match를 사용한 조건부 요청 활성화, Strict-Transport-Security(HSTS)로 HTTPS 강제, Access-Control-Allow-Origin과 Access-Control-Max-Age를 사용한 CORS 사전 요청 구성, HttpOnly·Secure·SameSite 속성을 사용한 보안 쿠키 설정 등을 이 레퍼런스로 빠르게 확인합니다. 보안 엔지니어들은 CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy 헤더를 통해 웹 애플리케이션을 강화합니다.

콘텐츠는 개발자가 헤더를 조회하는 일반적인 영역을 반영하여 구성됩니다. 인증 흐름(Bearer 토큰, WWW-Authenticate 챌린지), HTTP 캐싱 전략(ETag, 조건부 GET, Expires), 콘텐츠 협상(Accept, Content-Type, gzip/br Content-Encoding), 크로스 오리진 API 호출을 위한 CORS 구성, 웹 보안 강화, 쿠키 관리 등을 다룹니다. 모든 항목에는 헤더 이름, 목적에 대한 간결한 설명, 구체적인 예제 값이 포함되어 있습니다.

주요 기능

  • 인증 헤더: Authorization (Bearer, Basic), WWW-Authenticate 챌린지, Proxy-Authorization
  • 캐시 헤더: Cache-Control 지시어, ETag 리소스 버전 관리, If-None-Match와 If-Modified-Since 조건부 요청, Expires
  • 콘텐츠 헤더: charset이 포함된 Content-Type, Content-Length, Content-Encoding (gzip), Accept와 Accept-Encoding 협상
  • CORS 헤더: Access-Control-Allow-Origin, Allow-Methods, Allow-Headers, 사전 요청 캐싱을 위한 Max-Age
  • 보안 헤더: X-Frame-Options, Content-Security-Policy, HSTS, X-Content-Type-Options, Referrer-Policy
  • 쿠키 헤더: Cookie 요청 헤더, Path·HttpOnly·Secure·SameSite 속성이 포함된 Set-Cookie
  • 유틸리티 헤더: User-Agent, Host, 리다이렉트를 위한 Location, 분산 추적을 위한 X-Request-ID
  • Nginx, Express, Django, 모든 HTTP 서버에 바로 복사해 사용할 수 있는 실제 예제 값

자주 묻는 질문

Authorization 헤더와 WWW-Authenticate 헤더의 차이는 무엇인가요?

Authorization은 클라이언트가 보내는 요청 헤더로, Bearer JWT 토큰이나 Base64 인코딩된 username:password 같은 인증 정보를 담습니다. WWW-Authenticate는 서버가 401 Unauthorized 상태와 함께 보내는 응답 헤더로, 어떤 인증 방식이 필요한지 클라이언트에게 알립니다(예: Bearer realm="api"). 서버가 먼저 챌린지하고, 클라이언트는 다음 요청에서 Authorization으로 응답합니다.

ETag와 If-None-Match를 사용한 HTTP 캐싱은 어떻게 동작하나요?

서버는 리소스에 대한 고유 해시나 버전 식별자와 함께 ETag 헤더를 보냅니다. 이후 요청에서 클라이언트는 If-None-Match: "hash"를 보냅니다. 리소스가 변경되지 않았으면 서버는 본문 없이 304 Not Modified를 반환하여 대역폭을 절약합니다. 변경되었으면 새 ETag와 함께 200을 반환합니다. Cache-Control: max-age는 클라이언트가 재검증 전에 캐시된 복사본을 사용하는 기간을 제어합니다.

Content-Security-Policy(CSP)란 무엇이고 어떻게 구성하나요?

CSP는 브라우저가 페이지에 로드할 수 있는 리소스를 제한하는 보안 응답 헤더입니다. default-src 지시어는 모든 리소스 유형의 폴백을 정의합니다. script-src로 JavaScript 소스를, style-src로 CSS를, img-src로 이미지를, connect-src로 fetch/XHR 대상을 허용 목록에 추가합니다. 엄격한 시작 정책은 Content-Security-Policy: default-src 'self'로 동일 출처 리소스만 허용합니다. 위반 보고는 report-uri 또는 report-to를 사용합니다.

HSTS란 무엇이고 왜 중요한가요?

Strict-Transport-Security(HSTS)는 브라우저에게 http://를 입력해도 HTTPS로만 연결하도록 지시합니다. max-age 지시어는 이를 적용하는 기간(초)을 설정합니다. includeSubDomains는 모든 하위 도메인으로 정책을 확장합니다. preload는 브라우저 사전 로드 목록에 포함되어 첫 방문에서도 HTTPS를 강제합니다. SSL 스트리핑 공격과 실수로 인한 HTTP 연결을 방지합니다.

CORS 헤더는 크로스 오리진 API 요청에서 어떻게 동작하나요?

브라우저가 크로스 오리진 요청을 할 때 먼저 사전 요청(OPTIONS)을 보냅니다. 서버는 Access-Control-Allow-Origin(허용된 오리진 또는 *), Access-Control-Allow-Methods(GET, POST 등), Access-Control-Allow-Headers(Content-Type, Authorization 등)로 응답해야 합니다. Access-Control-Max-Age는 사전 요청 결과를 캐시하여 반복적인 OPTIONS 요청을 줄입니다. 자격 증명 요청(쿠키)에는 Access-Control-Allow-Credentials: true가 필요하고 Allow-Origin에 *를 사용할 수 없습니다.

Set-Cookie의 HttpOnly, Secure, SameSite 속성은 무슨 역할을 하나요?

HttpOnly는 JavaScript(document.cookie)가 쿠키에 접근하지 못하게 하여 XSS를 통한 세션 쿠키 탈취를 방지합니다. Secure는 쿠키를 HTTPS 연결로만 제한합니다. SameSite=Strict는 크로스 사이트 요청에서 쿠키 전송을 완전히 차단하여 CSRF를 방지합니다. SameSite=Lax는 최상위 탐색(링크 클릭)에서는 허용하지만 임베디드 크로스 사이트 요청에서는 차단합니다. 인증 세션 쿠키에는 세 가지 속성을 모두 사용하세요.

Cache-Control: no-cache와 no-store의 차이는 무엇인가요?

no-cache는 "캐시하지 않는다"는 의미가 아닙니다. 캐시된 복사본을 사용하기 전에 서버에 재검증해야 한다는 의미입니다(If-None-Match 또는 If-Modified-Since 전송). 응답은 여전히 로컬에 캐시될 수 있습니다. no-store는 응답을 어디에도 저장하지 말라는 의미입니다. 브라우저 캐시, CDN, 프록시 캐시 모두 해당됩니다. 은행 계좌 페이지 같은 민감한 데이터에는 no-store를, 자주 변경되지만 조건부 GET 재검증의 혜택을 받을 수 있는 페이지에는 no-cache를 사용하세요.

Referrer-Policy란 무엇이고 어떤 값을 사용해야 하나요?

Referrer-Policy는 다른 페이지로 이동할 때 Referer 요청 헤더가 출처 페이지에 대해 얼마나 많은 정보를 공개하는지 제어합니다. strict-origin-when-cross-origin(현대 브라우저 기본값)은 동일 출처 요청에는 전체 URL을, 크로스 오리진 요청에는 출처만, HTTP에서 HTTPS로 다운그레이드 시에는 아무것도 보내지 않습니다. no-referrer는 최대 개인 정보 보호를 위해 Referer를 전혀 보내지 않습니다. 대부분의 사이트에 대한 합리적인 기본값으로 strict-origin-when-cross-origin을 사용하세요.