HTTP / 1.1 302究竟是什么意思?

有一篇文章我曾经说过,这意味着跳跃(从一个URI到另一个),但是我发现这个“302”,即使实际上没有跳跃!

302redirect意味着该页面被临时移动,而301意味着该页面被永久移动。

301对SEO价值有好处,而302则不是因为301s指示客户忘记原始URL的价值,而302则保留了原始值,因此可能通过创build两个逻辑上不同的URL来降低价值每个产生相同的内容(search引擎将它们视为不同的重复而不是具有两个名称的单个资源)。

查看HTTP 301与302redirect的简单方法是:

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

在这一点上302redirect到一个不同的URL将意味着你应该保持你的书签“ http://sample.com/sample ”。 这是因为目标url将来可能会更改。

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

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

 10.3.3 302发现

   请求的资源暂时驻留在不同的URI下。
   由于redirect有时可能会改变,客户端应该
   继续为将来的请求使用Request-URI。 这个回应
   只有通过Cache-Control或Expires标头指示才可以caching
   领域。

   临时URI应该由位置字段给出
   响应。 除非请求方法是HEAD,否则它的实体
   响应应该包含一个超链接到一个简短的超文本笔记
   新的URI(s)。

资源:

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

2017年年中回答一个8岁的问题

302的响应是执行URLredirect的常用方法。

302状态码一起,响应应该包含具有不同URI的Location标题。 这样的头部将被用户代理读取,然后执行redirect。

RFC 2616现已过时,不能再作为参考 。 RFC 7231 (HTTP / 1.1协议的语义和内容的当前参考)对302状态码进行了以下说明:

6.4.3。 302find

302 (find)状态码指示目标资源暂时驻留在不同的URI下。 由于redirect有时可能被改变,所以客户端应该继续使用有效的请求URI来用于将来的请求。

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

注意:由于历史原因,用户代理可能会将请求方法从POST更改为GET ,以供后续请求使用。 如果这种行为是不希望的,则可以使用307 (临时redirect)状态码。

根据Mozilla的MDN web文档 , 302一个典型用例是:

该网页暂时不可用,原因是没有预料不到的。 这样,search引擎不会更新他们的链接。

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

在SEO方面,301和302两者都不错,取决于情况,

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

维基百科 :

HTTP响应状态码302 Found是执行redirect的最常用方式。 这是违背标准的工业实践的一个例子。

302是指示资源位置改变的响应 – “find”。

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

“跳转”应该由请求客户端完成(在响应位置标题字段中对资源url进行新的请求)。

HTTP代码302用于redirect,请参阅http://en.wikipedia.org/wiki/HTTP_302

它告诉浏览器阅读一个页面去其他地方并加载另一个页面。 它的使用非常普遍。

根据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.