我不清楚各种 HTTP 3XX 重定向代码之间的差异。是的,我已经阅读了规范,但标准与实际实践之间似乎存在一些差异。
The 301
重定向代码似乎足够清楚:这意味着资源已永久移动到另一个 URI,并且将来的请求应使用该 URI。
And the 307
重定向代码似乎也很清楚:这意味着重定向是临时的,将来的请求仍应使用原始 URI。
但我无法说出两者之间有什么区别302
and 303
,或者为什么它们中的任何一个与301
。看起来302
最初的目的是成为一个暂时的重定向,(例如307
),但实际上,大多数浏览器将其视为303
。但是a和a有什么区别303
and a 301
? Is 301
应该意味着重定向是more永恒的?
-
301:永久重定向。对此资源发出后续请求的客户端应使用新的 URI。客户应该not自动遵循 POST/PUT/DELETE 请求的重定向。
-
302:由于未定义原因而重定向。对该资源发出后续请求的客户端应该not使用新的 URI。客户应该not自动遵循 POST/PUT/DELETE 请求的重定向。
-
303:由于未定义原因而重定向。通常,“操作已完成,在其他地方继续”。对该资源发出后续请求的客户端应该not使用新的 URI。客户should遵循 POST/PUT/DELETE 请求的重定向,但是使用 GET 进行后续请求.
-
307: 临时重定向。资源稍后可能会返回到此位置。对此资源发出后续请求的客户端应使用旧的 URI。客户应该not自动遵循 POST/PUT/DELETE 请求的重定向。
如果可以选择的话,我个人建议避免使用 302。许多客户端在遇到 302 时并不遵循规范。对于临时重定向,您应该使用 303 或 307,具体取决于您希望对非 GET 请求执行什么类型的行为。优先选择 307 而不是 303,除非您需要 POST/PUT/DELETE 上的替代行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)