HTTP / 1.1 302到底是什么意思?


120

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


1
wc3.org文档中可能对此有一些很好的信息。
巴拿马杯2009年

2
请密切注意:example.com example.comexample.com在逻辑上是截然不同的,并且希望通过单个URL访问的站点可以从一个重定向到另一个以实现此目的。当然,对于这种情况,302重定向是一个糟糕的选择……但是您可能已经看到了类似的细微变化。
Shog9 2009年

请参阅本网站(hostingpill.com/http-302-error
virusarthak

Answers:


74

302重定向表示该页面已被临时移动,而301重定向则意味着该页面已被永久移动。

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


58

早在RFC 2616还在徘徊的时候就问过这个问题。该问题的一些答案都基于此类文档,该文档如今已不再适用。引用Mark Nottingham(在撰写本文时,他是IETF HTTP和QUIC工作组的共同主席)的话:

不要使用RFC2616。从硬盘驱动器,书签中将其删除,并刻录(或负责地回收)所有打印出的副本。

下列定义了HTTP / 1.1协议的文档已取代了旧的RFC 2616:

因此,我旨在提供一个基于RFC 7231的答案,它是HTTP / 1.1状态代码的当前参考。

302状态代码

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


重定向示例


在后续请求中,Web浏览器可能会从更改POSTGET。如果不希望出现这种情况,则307可以改用(Temporary Redirect)状态代码。

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

6.4.3。找到302个

302(实测值)状态代码表示目标资源下不同的URI临时驻留。由于重定向有时可能会更改,因此客户端应继续将有效请求URI用于将来的请求。

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

注意:由于历史原因,用户代理可以将请求方法从POST更改GET为后续请求。如果不希望出现这种情况,则307可以改用(Temporary Redirect)状态代码。

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

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

其他状态代码用于重定向

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

  • 301 (永久移动)
  • 302 (找到)
  • 307 (临时重定向)

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

  • 308 (永久重定向)

有关更多详细信息,请参考此答案


2
好吧,我两天的痛苦对您来说已经不那么重要了(Location标题是帮助我的事情)。事实证明,我正在与一起调用服务,http他们转移到https,我得到的回应是302,一旦我Location在此处阅读标头,我就看到了http/https区别。谢谢!
尤金(Eugene)

对于这个错误,我有相同的原因。我的Javascript指向错误的https位置,因此重定向失败。谢谢你的意见。
最大

25

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

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

此时,将302重定向到其他URL意味着您应将书签保留在“ http://sample.com/sample ”。这是因为目标URL将来可能会更改。

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


9

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

10.3.3找到302

   所请求的资源临时位于其他URI下。
   由于重定向有时可能会更改,因此客户端应
   继续将Request-URI用于将来的请求。这个回应
   仅当由Cache-Control或Expires标头指示时才可缓存
   领域。

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

资源:

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




5

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

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

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


5

就SEO而言,301和302都不错,取决于情况,

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



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.

0
  • 代码302指示临时重定向
  • 区别于301重定向的最显着特征之一是,在302重定向的情况下,SEO的强度不会转移到新的URL。
  • 这是因为已将这种重定向设计为在需要将内容重定向到不是最终页面的页面时使用。因此,一旦取消了重定向,原始页面就不会失去其在Google搜索引擎中的位置。

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

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

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

  • 换句话说,当Google机器人或其他搜索引擎请求加载特定页面时,重定向302被激活。此时,由于此重定向,服务器返回了指示新URL的自动响应。

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

有关详细信息,请参阅此文章


0

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

具有此状态代码的HTTP响应还将在标头字段Location中提供URL。这是对用户代理(例如,Web浏览器)的邀请,以对在位置字段中指定的新URL进行其他请求(否则是相同的)。最终结果是重定向到新URL。


0

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

同样,它也是“捉迷藏”,这意味着在302状态下丢失的资源只是暂时丢失,不应永远丢失(除非玩家有一些不良意图;)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.