요청·응답 헤더를 카테고리별로. 문법·지시어·보안 참고와 관련 헤더/코드를 함께 봅니다.
Access-Control-Allow-CredentialsAccess-Control-Allow-Credentials는 교차 오리진 요청이 쿠키·HTTP 인증·클라이언트 인증서 같은 자격 증명을 포함할 때, 브라우저가 그 응답을 스크립트에 넘겨줘도 되는지를 지정하는 CORS 헤더입니다.Access-Control-Allow-HeadersAccess-Control-Allow-Headers는 CORS 프리플라이트 응답에서, 교차 오리진 실제 요청이 보낼 수 있는 커스텀·비단순 요청 헤더 목록을 알리는 헤더입니다. 여기 허용되지 않은 헤더를 실제 요청에 넣으면 브라우저가 차단합니다.Access-Control-Allow-MethodsAccess-Control-Allow-Methods는 CORS 프리플라이트(OPTIONS) 응답에서, 교차 오리진 요청이 실제로 사용할 수 있는 HTTP 메서드 목록을 브라우저에 알리는 헤더입니다. 여기 없는 메서드로 실제 요청을 보내면 브라우저가 차단합니다.Access-Control-Allow-OriginAccess-Control-Allow-Origin(ACAO)은 브라우저의 동일 출처 정책(SOP)을 넘어 어떤 오리진이 이 응답을 읽을 수 있는지를 지정하는 CORS 핵심 헤더입니다. 이 헤더가 없거나 요청 오리진과 맞지 않으면 브라우저는 응답 본문 접근을 차단합니다.OriginOrigin은 요청을 시작한 출처(오리진: 스킴+호스트+포트)를 서버에 알리는 요청 헤더입니다. Referer와 달리 경로·쿼리를 포함하지 않아 프라이버시에 유리하며, CORS와 CSRF 검증의 핵심입니다.AgeAge는 응답이 원 서버에서 생성된 뒤 캐시에 머문 시간을 초 단위로 알려주는 헤더입니다. 주로 CDN·프록시 같은 공유 캐시가 저장된 응답을 재사용해 내보낼 때 붙입니다.Cache-ControlCache-Control은 요청·응답 양쪽에서 캐싱 동작을 지시하는 지시자(directive) 목록을 담는 헤더입니다. 응답에 붙으면 브라우저·CDN·프록시가 이 응답을 얼마나, 어떻게 저장·재사용할지 결정합니다. HTTP 캐싱 정책의 사실상 표준입니다.ExpiresExpires는 응답이 신선하지 않게 되는(stale) 절대 시각을 지정하는 캐싱 헤더입니다. 이 시각 전까지 캐시는 서버에 다시 묻지 않고 저장된 응답을 그대로 재사용할 수 있습니다.VaryVary는 이 응답이 어떤 요청 헤더 값에 따라 달라지는지를 캐시에 알려주는 헤더입니다. 캐시는 동일 URL이라도 Vary에 나열된 헤더 값이 다르면 별개의 캐시 항목으로 취급해, 엉뚱한 사용자에게 잘못된 표현을 주는 일을 막습니다.ETagETag(Entity Tag)는 특정 리소스 표현의 버전을 식별하는 불투명(opaque) 문자열입니다. 리소스 내용이 바뀌면 ETag도 바뀌므로, 클라이언트와 서버는 이 값을 비교해 캐시가 여전히 유효한지 판단하거나 낙관적 동시성 제어를 수행합니다.If-MatchIf-Match는 클라이언트가 가진 ETag가 서버의 현재 ETag와 '일치할 때만' 요청을 처리하도록 하는 조건부 요청 헤더입니다. 주로 PUT·DELETE 같은 쓰기에서 동시 수정 충돌을 막는 낙관적 잠금(optimistic locking)에 쓰입니다.If-Modified-SinceIf-Modified-Since는 클라이언트가 가진 캐시본의 마지막 수정 시각을 서버에 보내, '그 시각 이후에 바뀐 경우에만 본문을 달라'고 요청하는 조건부 요청 헤더입니다. 날짜 기반 캐시 재검증에 쓰입니다.If-None-MatchIf-None-Match는 클라이언트가 가진 캐시 표현의 ETag를 서버에 보내, '이 ETag와 다를 때만 본문을 달라'고 요청하는 조건부 요청 헤더입니다. 캐시 재검증의 가장 정확한 수단입니다.If-Unmodified-SinceIf-Unmodified-Since는 리소스가 지정한 시각 이후로 '변경되지 않았을 때만' 요청을 처리하도록 하는 조건부 요청 헤더입니다. 시각 기반의 동시 수정 충돌 방지에 쓰이며, If-Modified-Since의 반대 개념입니다.Last-ModifiedLast-Modified는 서버가 리소스가 마지막으로 변경되었다고 판단하는 시각을 알려주는 응답 헤더입니다. 클라이언트는 이 시각을 저장했다가 조건부 요청에 사용해, 그 이후 바뀌지 않았으면 캐시를 재사용합니다.ConnectionConnection은 현재 전송 연결을 어떻게 다룰지 제어하는 헤더입니다. 연결을 유지해 재사용할지(keep-alive), 응답 후 닫을지(close), 프로토콜을 전환할지(upgrade)를 지시합니다. HTTP/1.1의 지속 연결(persistent connection) 관리 핵심입니다.Transfer-EncodingTransfer-Encoding은 메시지 본문을 네트워크로 안전하게 전송하기 위해 적용하는 인코딩을 지정하는 홉 단위(hop-by-hop) 헤더입니다. 대표 값은 본문을 크기가 붙은 조각으로 나눠 보내는 `chunked`로, 전체 크기를 미리 모를 때 스트리밍 전송을 가능하게 합니다.AcceptAccept는 클라이언트가 응답 본문으로 받고 싶은 미디어 타입(MIME 타입)을 서버에 알려, 콘텐츠 협상(content negotiation)을 시작하는 요청 헤더입니다. 서버는 이 선호도에 맞춰 가장 적절한 표현을 골라 응답합니다.Accept-EncodingAccept-Encoding은 클라이언트가 해독할 수 있는 콘텐츠 압축 방식을 서버에 알리는 요청 헤더입니다. 서버는 이 중 하나를 골라 본문을 압축한 뒤 Content-Encoding 헤더로 실제 사용한 방식을 알립니다.Accept-LanguageAccept-Language는 사용자가 선호하는 자연어(한국어·영어 등)를 우선순위와 함께 서버에 알리는 요청 헤더입니다. 다국어 사이트는 이 값으로 어떤 언어의 콘텐츠를 보낼지 결정합니다.Content-DispositionContent-Disposition은 응답 본문을 브라우저가 페이지 안에 표시(inline)할지, 다운로드(attachment)로 처리할지를 지정하는 헤더입니다. 다운로드일 때는 저장 대화상자에 제안할 파일명도 함께 줄 수 있습니다.Content-EncodingContent-Encoding은 본문에 실제로 적용된 압축·변환 방식을 나타내는 헤더입니다. 수신 측은 이 값을 보고 본문을 원래대로 복원(해제)한 뒤 Content-Type에 따라 해석합니다.Content-LengthContent-Length는 메시지 본문의 크기를 바이트 단위 십진수로 나타내는 헤더입니다. 수신 측은 이 값으로 본문을 어디까지 읽어야 하는지, 즉 메시지의 경계를 정확히 알 수 있습니다.Content-TypeContent-Type은 메시지 본문의 미디어 타입(MIME 타입)을 나타내는 헤더입니다. 요청에서는 보내는 본문의 형식을, 응답에서는 받는 본문의 형식을 알려, 상대가 데이터를 올바르게 해석하도록 합니다.Accept-RangesAccept-Ranges는 서버가 이 리소스에 대해 범위 요청(Range)을 지원하는지를 클라이언트에 알리는 응답 헤더입니다. 값이 bytes이면 클라이언트는 리소스의 일부만 요청하는 이어받기·탐색을 시도할 수 있습니다.Content-RangeContent-Range는 부분 응답(206 Partial Content)에서 지금 보내는 바이트 구간이 전체 리소스의 어디에 해당하는지를 알려주는 헤더입니다. 클라이언트는 이 정보를 이용해 여러 조각을 올바른 위치에 이어 붙입니다.RangeRange는 리소스 전체가 아닌 일부 구간(주로 바이트 범위)만 요청하는 헤더입니다. 큰 파일의 다운로드 재개, 미디어 스트리밍의 탐색(seek), 병렬 분할 다운로드에 필수적입니다.AllowAllow는 특정 리소스가 지원하는 HTTP 메서드 목록을 알려주는 응답 헤더입니다. 클라이언트가 그 리소스에 어떤 동작(GET·POST·DELETE 등)을 할 수 있는지 파악하게 해줍니다.HostHost는 요청이 향하는 서버의 도메인 이름(과 선택적 포트)을 담는 헤더로, HTTP/1.1에서 유일하게 필수인 요청 헤더입니다. 하나의 IP 주소에 여러 도메인이 함께 호스팅되는 가상 호스팅(virtual hosting) 환경에서, 서버는 이 값을 보고 어떤 사이트를 응답할지 결정합니다.LocationLocation은 리다이렉트 대상 URL이나 새로 생성된 리소스의 URL을 가리키는 응답 헤더입니다. 3xx 응답에서는 브라우저가 이 URL로 자동 이동하고, 201 Created 응답에서는 방금 만들어진 리소스의 위치를 알려줍니다.Content-Security-PolicyContent-Security-Policy(CSP)는 브라우저가 페이지에서 어떤 출처의 스크립트·스타일·이미지·프레임 등을 로드하거나 실행할 수 있는지를 지시어(directive)로 세밀하게 통제하는 보안 헤더입니다. 신뢰하지 않은 리소스를 차단해 XSS·데이터 유출·클릭재킹을 크게 완화합니다.RefererReferer는 현재 요청이 시작된 이전 페이지의 URL, 즉 사용자가 어떤 페이지의 링크·리소스를 통해 이 요청에 도달했는지를 알려주는 요청 헤더입니다. 트래픽 출처 분석·유입 통계·기본적인 접근 제어에 쓰입니다.Referrer-PolicyReferrer-Policy는 브라우저가 다른 페이지로 이동하거나 리소스를 요청할 때 Referer 헤더에 얼마나 많은 출처 정보를 담을지를 제어하는 보안·프라이버시 헤더입니다. 전체 URL·오리진만·아무것도 안 보냄 사이에서 정책을 고를 수 있습니다.Strict-Transport-SecurityStrict-Transport-Security(HSTS)는 브라우저에게 앞으로 이 사이트에는 반드시 HTTPS로만 접속하라고 지시하는 보안 헤더입니다. 한 번 받으면 max-age 동안 http:// 접근 시도를 브라우저가 자동으로 https://로 승격하고, 인증서 오류를 무시할 수 없게 만듭니다.X-Content-Type-OptionsX-Content-Type-Options: nosniff는 브라우저가 응답의 실제 내용을 들여다보고 Content-Type을 임의로 추측(MIME 스니핑)하는 동작을 끄는 보안 헤더입니다. 서버가 선언한 Content-Type을 그대로 신뢰하게 만듭니다.X-Frame-OptionsX-Frame-Options는 이 페이지가 다른 페이지의 <iframe>·<frame>·<object> 안에 삽입될 수 있는지를 통제하는 보안 헤더입니다. 주 목적은 클릭재킹(clickjacking) 방어로, 공격자가 우리 페이지를 투명 프레임으로 덮어 사용자의 클릭을 가로채는 것을 막습니다.