141

我曾经读过的一些文章说这意味着跳转(从一个 URI 到另一个 URI),但即使实际上根本没有跳转,我也检测到了这个“302”!

4

16 回答 16

84

302 重定向意味着页面被暂时移动,而 301 意味着它被永久移动。

301s 有利于 SEO 价值,而 302s 不是因为 301s 指示客户忘记原始 URL 的值,而 302 保留原始 URL 的值,因此可以通过创建两个逻辑上不同的 URL 来潜在地降低价值每个都产生相同的内容(搜索引擎将它们视为不同的重复项,而不是具有两个名称的单个资源)。

于 2009-06-10T00:10:53.687 回答
76

这个问题是很久以前提出的,当时 RFC 2616 仍然存在。这个问题的一些答案基于这样的文件,现在不再相关。引用在撰写本文时担任 IETF HTTP 和 QUIC 工作组联合主席的Mark Nottingham的话:

不要使用 RFC2616。从您的硬盘驱动器、书签中删除它,并刻录(或负责任地回收)任何打印出来的副本。

旧的 RFC 2616 已被以下文档取代,这些文档共同定义了 HTTP/1.1 协议:

因此,我的目标是提供基于RFC 7231的答案,这是 HTTP/1.1 状态代码的当前参考。

状态302

响应302是执行 URL 重定向的常用方法。除了302状态码,响应还应该包含一个Location带有不同 URI 的标头。此类标头将由用户代理解析,然后执行重定向:


重定向示例


Web 浏览器可能会在后续请求中从POST变为。GET如果不希望出现这种行为,则307可以使用(临时重定向)状态代码。

这是RFC 7231302中定义状态代码的方式:

6.4.3. 302 找到

( 302Found) 状态码表示目标资源暂时驻留在不同的 URI 下。由于有时可能会更改重定向,因此客户端应该继续使用有效的请求 URI 来处理未来的请求。

服务器应该Location在响应中生成一个包含不同 URI 的 URI 引用的头字段。用户代理可以使用Location字段值进行自动重定向。服务器的响应负载通常包含一个简短的超文本注释,其中包含指向不同 URI 的超链接。

注意:由于历史原因,用户代理可以将请求方法从 更改POSTGET用于后续请求。如果不希望出现这种行为,则307可以使用(临时重定向)状态代码。

根据来自 Mozilla 的 MDN 网络文档,一个典型的用例302是:

由于不可预见的原因,该网页暂时不可用。这样,搜索引擎就不会更新他们的链接。

其他重定向状态码

RFC 7231定义了以下重定向状态代码:

  • 301(永久移动)
  • 302(成立)
  • 307(临时重定向)

创建RFC 7238是为了定义另一个重定向状态代码:

  • 308(永久重定向)

有关详细信息,请参阅此答案

于 2017-08-15T10:38:19.740 回答
27

查看 HTTP 301 与 302 重定向的简单方法是:

假设您有一个“ http://sample.com/sample ”的书签。你使用浏览器去那里。

此时,302 重定向到不同的 URL 意味着您应该将书签保留为“ http://sample.com/sample ”。这是因为目标 URL 将来可能会发生变化。

301 重定向到不同的 URL 意味着您的书签应该更改为指向新的 URL,因为它是永久重定向。

于 2009-06-10T00:18:51.440 回答
9

来自维基百科

HTTP 响应状态码 302 Found 是执行重定向的最常见方式。这是与标准相矛盾的工业实践的一个例子。

于 2009-06-10T00:08:45.673 回答
9

来自RFC 2616(超文本传输​​协议规范)

10.3.3 302 找到

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

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

资源:

http://www.ietf.org/rfc/rfc2616.txt

于 2009-06-10T00:19:48.723 回答
5

在 SEO 方面,301 和 302 都很好,这取决于情况,

如果只能返回一个版本(即,另一个重定向到它),那就太好了!这种行为是有益的,因为它减少了重复的内容。在重定向到尾部斜杠 URL 的特定情况下,我们的搜索结果可能会显示带有 200 响应代码的 URL 版本(通常是尾部斜杠 URL)——无论重定向是 301 还是 302。

于 2012-12-03T07:13:29.383 回答
5

根据http 状态代码定义,302 表示(临时)重定向。“请求的资源临时驻留在不同的 URI 下”

于 2009-06-10T00:11:59.113 回答
5

302是指示资源位置改变的响应-“找到”。

资源现在应该位于的 url 应该在响应的“Location”标头中。

“跳转”应该由请求客户端完成(向响应 Location 标头字段中的资源 url 发出新请求)。

于 2009-06-10T00:14:11.947 回答
3

HTTP 代码 302 用于重定向,请参见http://en.wikipedia.org/wiki/HTTP_302

它告诉浏览页面的浏览器去其他地方并加载另一个页面。它的用法很常见。

于 2009-06-10T00:10:35.327 回答
1

根据RFC 1945/超文本传输​​协议 - HTTP/1.0

   302 Moved Temporarily

   The requested resource resides temporarily under a different URL.
   Since the redirection may be altered on occasion, the client should
   continue to use the Request-URI for future requests.

   The URL must be given by the Location field in the response. Unless
   it was a HEAD request, the Entity-Body of the response should
   contain a short note with a hyperlink to the new URI(s).

   If the 302 status code is received in response to a request using
   the POST method, the user agent must not automatically redirect the
   request unless it can be confirmed by the user, since this might
   change the conditions under which the request was issued.

       Note: When automatically redirecting a POST request after
       receiving a 302 status code, some existing user agents will
       erroneously change it into a GET request.
于 2017-01-31T17:44:49.463 回答
0

302 :当您尝试加载的资源或页面已通过 302 重定向临时移动到其他位置时,会出现此状态代码。

于 2021-03-01T16:15:31.037 回答
0

首先让我们看一个场景 301 和 302 是如何工作的

  1. 301 --> 永久移动

假设有一些资源,例如 --> http://hashcodehub.com/user,现在我们将资源名称更改为 user- info --> 现在 url 应该是 http://hashcodehub.com/user- info --> 但用户仍在尝试访问相同的 URL --> http://hashcodehub.com/user --> 从后端我们可以将用户重定向到新的 url 并将状态代码发送为 301 --> 用于永久移动。

上面我已经解释了 301 是如何工作的

让我们了解 302 将如何在现实生活中使用

  1. 302 --> 临时重定向--> 这里完整的 url 不需要更改,但由于某种原因,我们重定向到不同位置的资源。这里在 location 头域中,我们将给出新资源 url 的值,浏览器将再次向响应 location 头域中的资源 url 发出请求。

  2. 可以使用 302 以防万一我们的页面上有不合适的内容。当我们解决该问题时,我们可以将所有使用过的内容重定向到某个临时 url 并解决问题。

  3. 如果网站上有一些附件并且某些页面需要恢复,也可以使用它,在这种情况下,我们也可以将用户重定向到不同的资源。

  4. 例如,重定向302用于具有不同语言的主页的多个版本。主要版本可以是英语;但如果访问者来自其他国家/地区,则该系统会自动将他们重定向到以他们的语言显示的页面。

于 2020-08-18T07:10:48.930 回答
0

302 状态码是 HTTP 响应状态码,表示请求的资源已临时移动到不同的 URI。由于将来可能会更改位置或当前重定向指令,因此接收到 302 Found 响应代码的客户端应继续将原始 URI 用于将来的请求。

带有此状态代码的 HTTP 响应将在标头字段 Location 中额外提供一个 URL。这是对用户代理(例如网络浏览器)的邀请,以向位置字段中指定的新 URL 发出第二个(其他方面相同的)请求。最终结果是重定向到新 URL。

于 2019-11-18T07:04:06.337 回答
0

对于任何可能对命名感到好奇的人,我只是要补充一点,它可能被称为“找到”,因为用户打算接收的主要资源(例如,私人网页)当时不可用(例如,用户尚未证明他们的身份),因此服务器找到了用户可以接收的新资源(这是最常见用例中的登录页面)。

也就是在捉迷藏的方式中“迷失了”,意思是302状态下丢失的资源只是暂时丢失,不应该永远丢失(除非玩家有一些恶意;))。

于 2020-06-15T08:38:09.613 回答
0
  • 代码 302 表示临时重定向
  • 将其与 301 重定向区分开来的最显着特征之一是,在 302 重定向的情况下,SEO 的强度不会转移到新的 URL。
  • 这是因为这种重定向被设计为在需要将内容重定向到一个不是最终页面的页面时使用。因此,一旦消除重定向,原始页面将不会失去其在 Google 搜索引擎中的定位。

示例:-虽然我们发现自己需要 302 重定向的情况并不常见,但此选项在某些情况下可能非常有用。这些是最常见的情况:

  • 当我们意识到页面上有一些不适当的内容时。当我们解决问题时,我们可以将用户重定向到另一个可能感兴趣的页面。
  • 如果对我们网站的攻击需要恢复任何页面,此重定向可以帮助我们将发生率降到最低。

重定向 302 是一个代码,它告诉特定 URL 的访问者该页面已被临时移动,将他们直接引导到新位置。

  • 换言之,重定向 302 在 Google 机器人或其他搜索引擎请求加载特定页面时被激活。在那一刻,由于这种重定向,服务器返回一个自动响应,指示一个新的 URL。

  • 这样就避免了搜索引擎和用户的错误和烦恼,保证了流畅的导航。

有关详细信息,请参阅本文

于 2019-09-04T06:22:12.477 回答
-1

我知道 302 有一些用例,与 http -> https 是永久的相比,我认为它表示临时重定向是非常合适的。

  1. google 使用 302 将其服务重定向到与您对应的语言/国家/地区的版本。

  2. cdn(例如 npm 使用的 unpkg.com)使用 302 将文件重定向到其当前/确切版本,该版本将在未来更改。

  3. 当电子商务网站有季节性促销时,它希望在该期间显示,但在其他时间返回原始页面。

于 2021-07-15T08:42:53.663 回答