HTTP 301
和308
状态代码之间有什么区别?
301
(永久移动):此以及将来的所有请求都应指向给定的URI。
308
(永久重定向):应使用其他URI重复请求和所有将来的请求。
他们似乎很相似。
答案 0 :(得分:168)
301
,302
和307
RFC 7231,HTTP / 1.1协议的语义和内容的当前参考,定义301
(永久移动)和302
(找到)状态代码,允许请求方法从POST
更改为GET
。此规范还定义了307
(临时重定向)状态代码,该代码不允许将请求方法从POST
更改为GET
。
请参阅以下详细信息:
301
(永久移动)状态代码表示目标 资源已被分配一个新的永久URI和任何未来 对此资源的引用应该使用其中一个附带的URI。 [...]注意:由于历史原因,用户代理可以更改请求 从
POST
到GET
的方法,用于后续请求。如果这 行为是不受欢迎的,307
(临时重定向)状态代码 可以改为使用。
302
(已找到)状态代码表示目标资源 暂时驻留在不同的URI下。自重定向 有时可能会改变,客户应该继续使用 未来请求的有效请求URI。 [...]注意:由于历史原因,用户代理可以更改请求 从
POST
到GET
的方法,用于后续请求。如果这 行为是不受欢迎的,307
(临时重定向)状态代码 可以改为使用。
307
(临时重定向)状态代码表示目标 资源临时驻留在不同的URI和用户代理之下 如果它执行自动,则不得更改请求方法 重定向到该URI。由于重定向可能会随时间而变化, 客户端应该继续使用原始的有效请求URI 为了将来的要求。 [...]注意:此状态代码与
302
(找到)类似,不同之处在于 不允许将请求方法从POST
更改为GET
。这个 规范没有定义301
的等效副本(移动 永久性地()RFC 7238定义状态代码308
(永久重定向)为此目的)。
308
已创建RFC 7238以定义308
(永久重定向)状态代码,类似于301
(永久移动)但不允许更改请求方法从POST
到GET
。
308
状态代码现在由RFC 7538定义(已废除RFC 7238)。
308
(永久重定向)状态代码表示目标 资源已被分配一个新的永久URI和任何未来 对此资源的引用应该使用其中一个附带的URI。 具有链接编辑功能的客户端应该自动重新链接 对有效请求URI的引用 服务器发送的一个或多个新引用,如果可能的话。 [...]注意:此状态代码类似于
301
(永久移动), 除了它不允许更改请求方法POST
至GET
。
我们有以下内容:
+-----------+-----------+
| 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):