I am currently trying to understand how exactly 304/Not modified qualifies for the 3xx-range class of HTTP status codes. RFC 1945, sec. 9.3 and RFC 2616, sec. 10.3 both read:
This class of status code indicates that further action needs to be taken by the user agent in order to fulfill the request.
While "loading from the client's local cache" clearly is a "further action," I am struggling to see how this is a redirect in the sense of HTTP. Am I reading this too literally?
See http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p2-semantics-26.html#rfc.section.6.4.p.2:
There are several types of redirects:
Redirects that indicate the resource might be available at a different URI, as provided by the Location field, as in the status codes 301 (Moved Permanently), 302 (Found), and 307 (Temporary Redirect).
Redirection that offers a choice of matching resources, each capable of representing the original request target, as in the 300 (Multiple Choices) status code.
Redirection to a different resource, identified by the Location field, that can represent an indirect response to the request, as in the 303 (See Other) status code.
Redirection to a previously cached result, as in the 304 (Not Modified) status code.
I imagine it is because the server is "redirecting" the client to load the requested resource from its local cache instead of downloading it from the server. If the client did not have a local cached copy then it should not be sending a conditional request in the first place.
来源:https://stackoverflow.com/questions/23647055/why-does-the-304-status-code-count-as-a-redirect