HTTP重定向代码之间的差异

我不清楚各种HTTP 3XX重定向代码之间的区别。是的,我已经阅读了规范,但在这里的标准和实际做法之间似乎有一些差异。

301重定向代码看起来很清楚:这意味着资源被永久移动到另一个URI,并且未来的请求应该使用该URI。

并且307重定向代码也似乎很清楚:这意味着重定向是临时的,并且未来的请求应该仍然使用原始的URI。

但我不知道302和303之间的区别,或者为什么它们中的任何一个真正不同于301.似乎302最初是一个临时重定向,(307),但在实践中,大多数浏览器处理它像303.但303和301之间的区别是什么? 301是否意味着重定向更永久?

> 301:永久重定向。对此资源进行后续请求的客户端应使用新的URI。客户端不应自动遵循重定向POST / PUT / DELETE请求。
> 302:重定向未定义的原因。对此资源进行后续请求的客户端不应使用新的URI。客户端不应自动遵循重定向POST / PUT / DELETE请求。
> 303:重定向未定义的原因。通常,“操作已经完成,在其他地方继续。对此资源进行后续请求的客户端不应使用新的URI。客户端应该遵循POST / PUT / DELETE请求的重定向。
> 307:临时重定向。资源可能稍后返回此位置。对此资源进行后续请求的客户端应使用旧的URI。客户端不应自动遵循重定向POST / PUT / DELETE请求。

我个人建议避免302如果你有选择。许多客户端在遇到302时不遵循规范。对于临时重定向,您应该使用303或307,具体取决于您希望在非GET请求上的行为类型。首选307到303,除非您需要POST / PUT / DELETE上的备用行为。

翻译自:https://stackoverflow.com/questions/4764297/difference-between-http-redirect-codes

转载注明原文:HTTP重定向代码之间的差异