HTTP重定向代码之间的区别

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

301重定向代码似乎足够清晰:这意味着资源已永久移动到另一个URI,未来的请求应使用该URI。

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

但我无法分辨302303之间的区别,或者他们中的任何一个与301有什么不同。 看起来302最初是为了临时重定向(如307 ),但实际上,大多数浏览器将其视为303 。 但是303301之间有什么区别? 301是否意味着重定向更加永久?


  • 301 :永久重定向。 随后请求这个资源的客户端应该使用新的URI。 客户端不应自动执行重定向的POST / PUT / DELETE请求。
  • 302 :重定向为未定义的原因。 客户端使此资源应该使用新的URI的后续请求。 客户端不应自动执行重定向的POST / PUT / DELETE请求。
  • 303 :重定向为未定义的原因。 通常情况下,“操作已完成,在其他地方继续”。 客户端使此资源应该使用新的URI的后续请求。 客户端应该遵循POST / PUT / DELETE请求的重定向,但是对于后续请求使用GET
  • 307 :临时重定向。 资源可能会在稍后返回到此位置。 随后请求此资源的客户端应使用旧的URI。 客户端不应自动执行重定向的POST / PUT / DELETE请求。
  • 我个人建议避免302,如果你有选择。 许多客户在遇到302时不遵循规范。对于临时重定向,您应该使用303或307,具体取决于您在非GET请求中需要的行为类型。 除非您需要POST / PUT / DELETE上的替代行为,否则请使用307至303。


    303和307之间的区别在于:

    303 :另见。 该请求被正确接收,但结果应该使用重定向url上的GET进行检索。

    307 :临时重定向。 整个请求应该重定向到新的url。 任何帖子数据都应该重新发布。

    请注意, 302意图具有307的行为,但大多数浏览器将其实现为303的行为(这两者当时都不存在)。 因此,引入了这两个新代码来取代302。

    301和303之间的区别:

    301 :文档被移动。 未来的请求应该使用新的url。 此网址已过时。

    注意:请注意这些代码。 浏览器和代理倾向于对其应用真正具有侵略性的缓存,因此,如果您回复301,则可能需要很长时间才能重新访问该网址。

    303 :请求被正确接收。 处理任何PUT请求。 生成的文档可以从重定向url中检索。 未来的请求仍应该转到原始网址。

    链接地址: http://www.djcxy.com/p/45409.html

    上一篇: Difference between HTTP redirect codes

    下一篇: Status code for "already exist"