What 304 means
The answer to a conditional request (If-None-Match or If-Modified-Since): the resource hasn't changed since the client's cached version, so the server sends no body. It saves bandwidth.
Common causes
- The client sent an ETag or date it already has and the resource is unchanged.
How to fix it
If you're calling an API
- Use your cached copy. If you see 304 without a cache, stop sending If-None-Match / If-Modified-Since.
If you run the server
- Send ETag or Last-Modified headers so clients can make conditional requests.
Should you retry?
No need: use the cached version.
Example response
HTTP/1.1 304 Not Modified
ETag: "33a64df5"Related headers: ETag, If-None-Match, Last-Modified, If-Modified-Since.
Defined in: RFC 9110 (HTTP Semantics). 304 is a redirection.