【问题标题】:How does HTTP 302 work?HTTP 302 如何工作?
【发布时间】:2011-03-22 08:58:02
【问题描述】:

HTTP 302 如何工作?我想知道内部原理

【问题讨论】:

    标签: http http-redirect


    【解决方案1】:

    你的意思是浏览器如何处理它?服务器发送302 代码和Location 标头,浏览器请求Location 标头指定的新URI。

    301 (Moved Permanently)不同,浏览器继续使用原来的URI来做请求,以防302代码消失

    【讨论】:

    • 请注意,直到几年前,浏览器才缓存 301。现在,Chrome 可以,我相信 Firefox 可以。 IE9 会。
    • 因此,如果它不是发出请求的浏览器(及其应用程序),那么 http 将不会自动重定向到 https。您必须手动将请求字符串更改为 https。
    • 我很困惑。您的意思是 HTTP 301 将指示浏览器将重定向目标存储在其历史记录中并删除旧 URL?因为你似乎在说反话。
    • 我无法使用 Firefox 或 Chromium 中的后退按钮返回到原始 URL。有什么解决办法吗?
    【解决方案2】:

    服务器返回一个带有代码302的HTTP响应,表示临时重定向,并包含一个Location:标头表示新的URI,例如

    HTTP/1.1 302 Found
    Location: http://some-other-url
    

    以及可能由服务器自行决定的其他标头。

    浏览器通常将此作为指令自动对位置标头指定的其他 URI 发出新的单独请求。客户端(浏览器)不会强制这样做(理论上,它可以只向用户显示一条消息,或者做它想做的任何其他事情),但这就是 HTTP 客户端通常的行为方式。

    请注意,由于 302 是一个临时重定向,因此行为良好的客户端将来会继续使用旧 URL,而不是直接转到新 URL(301 是永久重定向)。

    【讨论】:

    • 提示:阅读此答案以获得更深入的理解。
    【解决方案3】:

    来自: http://www.ietf.org/rfc/rfc2616.txthttp://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

    10.3.3 找到 302

    请求的资源暂时位于不同的 URI 下。 由于重定向有时可能会改变,客户端应该 继续使用 Request-URI 来处理未来的请求。这个回应 仅在 Cache-Control 或 Expires 标头指示时才可缓存 字段。

    临时 URI 应该由 回复。除非请求方法是 HEAD,否则 响应应该包含一个带有超链接的简短超文本注释 新的 URI。

    如果收到 302 状态代码以响应其他请求 与 GET 或 HEAD 相比,用户代理不能自动重定向 请求,除非它可以被用户确认,因为这可能 更改发出请求的条件。

      Note: RFC 1945 and RFC 2068 specify that the client is not allowed
      to change the method on the redirected request.  However, most
      existing user agent implementations treat 302 as if it were a 303
      response, performing a GET on the Location field-value regardless
      of the original request method. The status codes 303 and 307 have
      been added for servers that wish to make unambiguously clear which
      kind of reaction is expected of the client.
    

    【讨论】:

      【解决方案4】:

      什么内部? 302是服务端给客户端的一个返回码,客户端做什么由它决定。 RFC 为客户端应该做什么提供了指导,但在现实世界中,主流浏览器对 301、302、303 和 307 的处理方式都是相同的。

      【讨论】:

      • 我已经看到 IE8 和 IE9 在位置标头未指定绝对 URI 时的行为有所不同......请注意
      【解决方案5】:

      只是一个插件- 重要的是,停止客户端连续/频繁地使用相同的请求访问相同的服务器 url。

      【讨论】:

        猜你喜欢
        • 2021-03-03
        • 2020-04-27
        • 2013-12-10
        • 2015-12-29
        • 1970-01-01
        • 1970-01-01
        • 2013-04-26
        • 2011-07-29
        • 2016-09-20
        相关资源
        最近更新 更多