홈 › 개발·웹 도구

HTTP 304 Not Modified

304는 리디렉션(3xx) 응답이에요. 아래 숫자를 바꿔 다른 코드도 바로 찾아볼 수 있어요.

파일은 서버로 전송되지 않고 내 기기에서만 처리돼요
HTTP 상태 코드 · 3xx 리디렉션
304 Not Modified
변경 없음 — 조건부 GET·HEAD에서 조건이 거짓으로 평가돼, 캐시에 있는 사본을 그대로 쓰면 된다는 응답이에요. 본문이 없어요.
이름304 Not Modified
분류3xx 리디렉션
정의 문서RFC 9110 §15.4.5
기본 캐시명시적 캐시 지시가 있을 때만
관련 헤더200 응답이었다면 보냈을 Content-Location·Date·ETag·Vary, Cache-Control·Expires (필수)

응답 예시

HTTP/1.1 304 Not Modified
Date: Thu, 12 Nov 2026 03:00:00 GMT
ETag: "5f2b-1a"
Cache-Control: max-age=600
(본문 없음)

다른 상태 코드 찾아보기

HTTP 304 Not Modified 뜻

304 Not Modified(변경 없음)는 3xx 리디렉션 응답이에요. 3xx는 요청을 끝내려면 다른 곳으로 가는 등 추가 동작이 필요하다는 응답이에요. 조건부 GET·HEAD에서 조건이 거짓으로 평가돼, 캐시에 있는 사본을 그대로 쓰면 된다는 응답이에요. 본문이 없어요. 정의는 HTTP 의미론 표준인 RFC 9110의 15.4.5절에 있어요.

HTTP 304 Not Modified 응답 첫 줄과 100~599 상태 코드 분류 중 3xx 리디렉션 위치

캐시: RFC 9110은 200, 203, 204, 206, 300, 301, 308, 404, 405, 410, 414, 501을 ‘기본으로 캐시 가능(heuristically cacheable)’으로 정해요. 304는 이 목록에 없어서, 응답에 Cache-Control이나 Expires로 캐시를 허락해야만 저장돼요.

헤더: 200 응답이었다면 보냈을 Content-Location·Date·ETag·Vary, Cache-Control·Expires (필수). 응답 예시는 위와 같은 모양이에요.

사용자로서 이 코드를 봤다면

오류가 아니에요. 브라우저가 저장해 둔 사본을 다시 쓴 거예요.

개발자라면

If-None-Match(ETag)나 If-Modified-Since 요청에 응답해요. 대역폭을 크게 아껴 줘요.

같은 분류의 다른 코드

코드이름한국어기본 캐시
300Multiple Choices여러 선택지가능
301Moved Permanently영구 이동가능
302Found임시 이동-
303See Other다른 곳 보기-
305Use Proxy프록시 사용(폐기)-
306(Unused)사용 안 함-
307Temporary Redirect임시 리디렉션-
308Permanent Redirect영구 리디렉션가능

이어서 보기

← 303 · 전체 목록 · 305 →

참고한 자료

자주 묻는 질문

HTTP 304 오류는 무슨 뜻이에요?

변경 없음이라는 뜻의 3xx 리디렉션 응답이에요. 조건부 GET·HEAD에서 조건이 거짓으로 평가돼, 캐시에 있는 사본을 그대로 쓰면 된다는 응답이에요. 본문이 없어요.

304 응답은 캐시되나요?

기본으로 캐시 가능한 코드가 아니라서 Cache-Control 같은 지시가 있어야 캐시돼요.

304 응답에 꼭 넣어야 하는 헤더가 있나요?

200 응답이었다면 보냈을 Content-Location·Date·ETag·Vary, Cache-Control·Expires (필수).

함께 쓰면 좋은 도구