What does HTTP/1.1 302 mean exactly?

后端 未结 14 2517
礼貌的吻别
礼貌的吻别 2020-12-02 05:49

Some article I read once said that it means jumping (from one URI to another), but I detected this \"302\" even when there was actually no jumping at all!

14条回答
  •  醉酒成梦
    2020-12-02 06:01

    This question was asked a long ago, while the RFC 2616 was still hanging around. Some answers to this question are based in such document, which is no longer relevant nowadays. Quoting Mark Nottingham who, at the time of writing, co-chairs the IETF HTTP and QUIC Working Groups:

    Don’t use RFC2616. Delete it from your hard drives, bookmarks, and burn (or responsibly recycle) any copies that are printed out.

    The old RFC 2616 has been supplanted by the following documents that, together, define the HTTP/1.1 protocol:

    • RFC 7230: Message Syntax and Routing
    • RFC 7231: Semantics and Content
    • RFC 7232: Conditional Requests
    • RFC 7233: Range Requests
    • RFC 7234: Caching
    • RFC 7235: Authentication

    So I aim to provide an answer based in the RFC 7231 which is the current reference for HTTP/1.1 status codes.

    The 302 status code

    A response with 302 is a common way of performing URL redirection. Along with the 302 status code, the response should include a Location header with a different URI. Such header will be parsed by the user agent and then perform the redirection:



    Web browsers may change from POST to GET in the subsequent request. If this behavior is undesired, the 307 (Temporary Redirect) status code can be used instead.

    This is how the 302 status code is defined in the RFC 7231:

    6.4.3. 302 Found

    The 302 (Found) status code indicates that the target resource resides temporarily under a different URI. Since the redirection might be altered on occasion, the client ought to continue to use the effective request URI for future requests.

    The server SHOULD generate a Location header field in the response containing a URI reference for the different URI. The user agent MAY use the Location field value for automatic redirection. The server's response payload usually contains a short hypertext note with a hyperlink to the different URI(s).

    Note: For historical reasons, a user agent MAY change the request method from POST to GET for the subsequent request. If this behavior is undesired, the 307 (Temporary Redirect) status code can be used instead.

    According to MDN web docs from Mozilla, a typical use case for 302 is:

    The Web page is temporarily not available for reasons that have not been unforeseen. That way, search engines don't update their links.

    Other status codes for redirection

    The RFC 7231 defines the following status codes for redirection:

    • 301 (Moved Permanently)
    • 302 (Found)
    • 307 (Temporary Redirect)

    The RFC 7238 was created to define another status code for redirection:

    • 308 (Permanent Redirect)

    Refer to this answer for further details.

提交回复
热议问题