HTTP 헤더 참조
표준 HTTP 요청·응답·CORS·캐싱·보안·쿠키 헤더 약 50개의 검색 가능한 참조.
| 헤더 | 설명 | ||
|---|---|---|---|
| Date | ↔ | 메시지가 생성된 시각입니다. IMF-fixdate 형식으로 씁니다. | |
| Connection | ↔ | 현재 주고받기가 끝난 뒤에도 네트워크 연결을 유지할지 정합니다(keep-alive / close). | |
| Transfer-Encoding | ↔ | 전송을 위해 메시지 본문을 어떻게 인코딩했는지 나타냅니다 — chunked, compress, deflate, gzip, identity. | |
| Content-Type | ↔ | 본문의 미디어 타입입니다(예: application/json; charset=utf-8). | |
| Content-Length | ↔ | 본문의 크기(바이트)입니다. | |
| Content-Encoding | ↔ | 본문에 적용한 압축 방식입니다(gzip, br, zstd). | |
| Content-Language | ↔ | 본문이 쓰인 자연어입니다(예: ko-KR). | |
| Content-Disposition | ↔ | 본문을 화면에 바로 표시할지, 내려받을 첨부 파일로 다룰지 정합니다. | |
| Host | → | 서버의 도메인 이름입니다(HTTP/1.1에서는 필수). | |
| User-Agent | → | 클라이언트 소프트웨어(브라우저, 봇, 라이브러리)를 식별합니다. | |
| Accept | → | 클라이언트가 처리할 수 있는 미디어 타입입니다(예: text/html, application/json). | |
| Accept-Encoding | → | 클라이언트가 풀 수 있는 콘텐츠 인코딩입니다(gzip, br). | |
| Accept-Language | → | 클라이언트가 선호하는 언어입니다(예: ko, en;q=0.8). | |
| Referer | → | 요청을 일으킨 페이지의 URL입니다 — 맞습니다, 표준 문서에서 철자가 틀린 그대로 굳었습니다. | |
| Authorization | → | 인증 정보입니다 — Basic, Bearer, Digest 등. | |
| Range | → | 리소스의 일부만 요청합니다(예: bytes=0-1023). 206 응답을 받게 됩니다. | |
| If-None-Match | → | 조건부 요청 — 리소스의 ETag가 일치하지 않을 때만 리소스를 돌려받습니다. | |
| If-Modified-Since | → | 조건부 요청 — 주어진 날짜 이후 바뀌었을 때만 리소스를 돌려받습니다. | |
| Origin | → | CORS 또는 fetch 요청을 시작한 페이지의 스킴 + 호스트 + 포트입니다. | |
| Server | ← | 요청을 처리하는 서버 소프트웨어를 식별합니다. | |
| Location | ← | 리다이렉트(3xx)의 대상 URL, 또는 새로 만든 리소스(201)의 위치입니다. | |
| ETag | ← | 리소스의 특정 버전을 가리키는 불투명 식별자입니다 — If-None-Match와 함께 씁니다. | |
| Last-Modified | ← | 리소스가 마지막으로 바뀐 시각입니다 — If-Modified-Since와 함께 씁니다. | |
| Retry-After | ← | 다시 시도하기 전에 기다릴 시간입니다 — 429, 503과 함께 씁니다. | |
| WWW-Authenticate | ← | 클라이언트에게 인증을 요구합니다 — 401 응답과 함께 보냅니다. | |
| Vary | ← | 이 응답에 영향을 주는 요청 헤더 목록입니다 — 캐시는 이를 항목의 키로 씁니다. | |
| Allow | ← | 리소스에 허용된 HTTP 메서드입니다 — 405 응답과 함께 보냅니다. | |
| Access-Control-Allow-Origin | ← | 응답을 읽어도 되는 출처입니다 — 정확한 출처 또는 "*". 자격 증명이 있으면 "*"를 쓸 수 없습니다. | |
| Access-Control-Allow-Methods | ← | 교차 출처 요청에서 리소스에 허용된 메서드입니다 — 프리플라이트 응답에 담아 보냅니다. | |
| Access-Control-Allow-Headers | ← | 클라이언트가 포함해도 되는 사용자 정의 요청 헤더입니다 — 프리플라이트 응답에 담아 보냅니다. | |
| Access-Control-Allow-Credentials | ← | 자격 증명(쿠키, 기본 인증)을 보낸 경우에도 응답을 공유할 수 있는지 나타냅니다. | |
| Access-Control-Max-Age | ← | 브라우저가 프리플라이트 응답을 캐시해도 되는 시간(초)입니다. | |
| Access-Control-Expose-Headers | ← | 기본 허용 목록 외에 JavaScript가 읽을 수 있는 응답 헤더입니다. | |
| Access-Control-Request-Method | → | 프리플라이트에서, 실제 요청이 사용할 메서드입니다. | |
| Access-Control-Request-Headers | → | 프리플라이트에서, 실제 요청에 포함될 사용자 정의 헤더입니다. | |
| Cache-Control | ↔ | 캐싱 지시어입니다 — max-age, no-store, public, private, immutable 등. | |
| Expires | ← | 응답이 만료되는 절대 날짜입니다 — Cache-Control: max-age가 있으면 그쪽이 우선합니다. | |
| Pragma | → | 레거시 캐싱 제어입니다 — HTTP/1.0 호환을 위한 "Pragma: no-cache". | |
| Age | ← | 프록시 기준으로, 응답이 원본 서버에서 만들어진 지 얼마나 지났는지(초) 나타냅니다. | |
| Strict-Transport-Security | ← | HSTS — 이후 방문에서 HTTPS를 강제합니다. 하위 도메인과 preload도 선택해 포함할 수 있습니다. | |
| Content-Security-Policy | ← | CSP — 브라우저가 스크립트, 스타일, 프레임 등을 어느 출처에서 불러올 수 있는지 제한합니다. | |
| X-Frame-Options | ← | 페이지를 프레임 안에 넣을 수 있는지 정합니다 — DENY, SAMEORIGIN. CSP frame-ancestors로 대체되었습니다. | |
| X-Content-Type-Options | ← | "nosniff"는 MIME 스니핑을 끕니다 — 브라우저는 선언된 Content-Type을 그대로 믿어야 합니다. | |
| Referrer-Policy | ← | 나가는 요청에 Referer URL을 어디까지 실어 보낼지 정합니다. | |
| Permissions-Policy | ← | 페이지와 그 프레임에서 브라우저 기능(카메라, 마이크, 위치 정보 등)을 켜거나 끕니다. | |
| Cross-Origin-Opener-Policy | ← | COOP — 브라우징 컨텍스트를 교차 출처 문서와 격리합니다. SharedArrayBuffer를 쓰려면 필요합니다. | |
| Cross-Origin-Resource-Policy | ← | CORP — 이 리소스를 불러올 수 있는 출처를 제한합니다. | |
| Cookie | → | 클라이언트가 서버로 다시 보내는 쿠키입니다. | |
| Set-Cookie | ← | 클라이언트에게 쿠키를 하나 이상 저장하라고 요청합니다 — 속성: Path, Domain, Max-Age, Secure, HttpOnly, SameSite. |
사용법
- 검색창에 헤더 이름(
cache-control) 또는 키워드(cors·redirect) 입력. - 카테고리 칩으로 범위 좁히기 — 예: Security로 CSP·HSTS·COOP 비교.
- 각 행의 복사 버튼으로 헤더 이름 복사.
자세한 설명
펼치기접기
실무에서 마주치는 HTTP 헤더를 검색할 수 있는 참고 자료입니다. 각 헤더가 무슨 일을 하는지, 요청과 응답 중 어느 쪽으로 흐르는지 혹은 양쪽 다인지, 그리고 CORS·캐싱·보안·쿠키 중 어디에 속하는지 보여 줍니다. 범주로 걸러 내거나 이름과 설명을 아울러 검색할 수 있습니다. 두 번 읽어 볼 만한 것은 방향 열입니다. 엉뚱한 쪽에 붙은 헤더는 그냥 아무 일도 하지 않기 때문입니다. Accept는 클라이언트가 원하는 바를 알리는 요청 헤더이고, Content-Type은 실제로 보내는 본문을 설명합니다. 이 둘을 헷갈리는 것이 서버가 요청을 무시하는 흔한 원인입니다. 헤더 이름은 정의상 대소문자를 구분하지 않으며 HTTP/2와 HTTP/3은 소문자로 보내므로, 코드에서 대조할 때는 소문자로 맞추세요.
자주 묻는 질문
왜 Cache-Control이 양방향으로 표시됨?
Cache-Control·Content-Type·Date·Connection 같은 일부 헤더는 요청·응답 둘 다 유효. 테이블에서 ↔로 표시.
Origin과 Referer 차이?
Origin은 scheme + host + port — CORS·POST 요청에 전송. Referer는 이전 페이지의 전체 URL이며 주로 분석 용도 — Referrer-Policy로 얼마나 누설할지 제어.
CORS preflight 헤더는 언제 사용?
fetch가 non-simple 메서드(PUT·DELETE)나 커스텀 헤더 사용 시 브라우저가 먼저 OPTIONS preflight 전송. Access-Control-Request-*는 preflight에, Access-Control-Allow-*는 응답에. 허용되면 실제 요청이 뒤따름.
헤더 이름은 대소문자를 구분하나?
구분하지 않는다. 필드 이름은 대소문자를 가리지 않으므로 Content-Type과 content-type은 같은 헤더다. HTTP/2와 HTTP/3은 한발 더 나아가 전송 시 이름을 소문자로 보내도록 요구한다. 대문자로 보내는 것처럼 보이는 사이트인데 디버깅 도구에는 소문자로 나오는 이유가 이것이다. 코드에서는 헤더 이름을 대소문자 무시로 비교하라. 값은 별개이고 보통 대소문자를 구분한다.
브라우저의 자바스크립트에서 실제로 읽을 수 있는 헤더는?
교차 출처 응답에서는 짧은 허용 목록뿐이다. cache-control, content-language, content-length, content-type, expires, last-modified, pragma가 전부이고, 서버가 Access-Control-Expose-Headers에 더 적어주어야 그 이상을 읽을 수 있다. 네트워크 패널에는 보이는 헤더가 fetch API에서는 null로 돌아오는 이유가 이것이다. 브라우저는 받았지만 페이지에는 읽게 해주지 않는 것이다.
관련 도구
CORS 헤더 빌더
Access-Control-* 응답 헤더 체크리스트 구성, 4 프리셋·위험한 조합 실시간 경고.
네트워크
HTTP 쿠키 파서
Cookie: 요청 헤더 또는 Set-Cookie: 응답 헤더 붙여넣기 → 각 쿠키의 이름·값·속성·경고 표시.
개발
Cache-Control 헤더 빌더
체크리스트로 HTTP Cache-Control 헤더 생성 — 프레시니스·재검증·immutable·자주 쓰는 프리셋.
네트워크
Cookie / Set-Cookie 헤더 빌더
이름/값 + 보안 속성(SameSite·Secure·HttpOnly·Partitioned·Max-Age)으로 Set-Cookie 응답 헤더 작성, 안전 경고 포함.
네트워크
ASCII 코드 표
256행 ASCII / 확장 ASCII 표 — 10진·16진·8진·2진 + 제어 문자 이름. 검색·복사.
개발
HTTP 메서드 참조
각 HTTP 메서드(GET·POST·PUT·DELETE·PATCH 등) 카드 — 안전성·idempotence·캐시 가능 여부·요청/응답 본문 허용.
개발