HTTP 301和308状态代码有什么区别?

时间:2017-02-09 12:32:21

标签: http http-status-code-301 http-status-codes http-status-code-308

HTTP 301308状态代码之间有什么区别?

  • 301(永久移动):此以及将来的所有请求都应指向给定的URI。

  • 308(永久重定向):应使用其他URI重复请求和所有将来的请求。

他们似乎很相似。

1 个答案:

答案 0 :(得分:168)

301302307

的概述

RFC 7231,HTTP / 1.1协议的语义和内容的当前参考,定义301(永久移动)和302(找到)状态代码,允许请求方法从POST更改为GET。此规范还定义了307(临时重定向)状态代码,该代码不允许将请求方法从POST更改为GET

请参阅以下详细信息:

  

6.4.2. 301 Moved Permanently

     

301(永久移动)状态代码表示目标   资源已被分配一个新的永久URI和任何未来   对此资源的引用应该使用其中一个附带的URI。 [...]

     

注意:由于历史原因,用户代理可以更改请求   从POSTGET的方法,用于后续请求。如果这   行为是不受欢迎的,307(临时重定向)状态代码   可以改为使用。

  

6.4.3. 302 Found

     

302(已找到)状态代码表示目标资源   暂时驻留在不同的URI下。自重定向   有时可能会改变,客户应该继续使用   未来请求的有效请求URI。 [...]

     

注意:由于历史原因,用户代理可以更改请求   从POSTGET的方法,用于后续请求。如果这   行为是不受欢迎的,307(临时重定向)状态代码   可以改为使用。

  

6.4.7. 307 Temporary Redirect

     

307(临时重定向)状态代码表示目标   资源临时驻留在不同的URI和用户代理之下   如果它执行自动,则不得更改请求方法   重定向到该URI。由于重定向可能会随时间而变化,   客户端应该继续使用原始的有效请求URI   为了将来的要求。 [...]

     

注意:此状态代码与302(找到)类似,不同之处在于   不允许将请求方法从POST更改为GET。这个   规范没有定义301的等效副本(移动   永久性地()RFC 7238定义状态代码308   (永久重定向)为此目的)。

需要308

已创建RFC 7238以定义308(永久重定向)状态代码,类似于301(永久移动)但不允许更改请求方法从POSTGET

308状态代码现在由RFC 7538定义(已废除RFC 7238)。

  

3. 308 Permanent Redirect

     

308(永久重定向)状态代码表示目标   资源已被分配一个新的永久URI和任何未来   对此资源的引用应该使用其中一个附带的URI。   具有链接编辑功能的客户端应该自动重新链接   对有效请求URI的引用   服务器发送的一个或多个新引用,如果可能的话。 [...]

     

注意:此状态代码类似于301(永久移动),   除了它不允许更改请求方法   POSTGET

我们有以下内容:

                                                             +-----------+-----------+
                                                             | Permanent | Temporary |
+------------------------------------------------------------+-----------+-----------+
| Allows changing the request method from POST to GET        | 301       | 302       |
+------------------------------------------------------------+-----------+-----------+
| Doesn't allow changing the request method from POST to GET | 308       | 307       |
+------------------------------------------------------------+-----------+-----------+

选择最合适的状态代码

查看下图(摘自page):

Picking a 2xx or 3xx status code