Why does the 304 status code count as a “redirect?

2019-04-29 04:07发布

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?

2条回答
趁早两清
2楼-- · 2019-04-29 04:28

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:

  1. 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).

  2. Redirection that offers a choice of matching resources, each capable of representing the original request target, as in the 300 (Multiple Choices) status code.

  3. 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.

  4. Redirection to a previously cached result, as in the 304 (Not Modified) status code.

查看更多
相关推荐>>
3楼-- · 2019-04-29 04:45

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.

查看更多
登录 后发表回答