302 FOUND和307 TEMPORARY REDIRECT HTTP响应之间的区别是什么?
W3规范似乎表明它们都用于临时重定向,并且都不能缓存,除非响应特别允许。
302 FOUND和307 TEMPORARY REDIRECT HTTP响应之间的区别是什么?
W3规范似乎表明它们都用于临时重定向,并且都不能缓存,除非响应特别允许。
当前回答
307内部重定向的一个很好的例子是当谷歌Chrome遇到一个HTTP调用到一个域,它知道需要严格的传输安全。
浏览器使用与原始调用相同的方法无缝重定向。
其他回答
另外,对于服务器管理员,重要的是要注意,如果使用307重定向,浏览器可能会向用户显示提示。
例如,Firefox和Opera会要求用户允许重定向,而Chrome、IE和Safari会透明地进行重定向。
*每个防弹SSL和TLS(第192页)。
302的预期:重定向使用相同的请求方法POST在NEW_URL
CLIENT POST OLD_URL -> SERVER 302 NEW_URL -> CLIENT POST NEW_URL
实际302,303:重定向改变请求方法从POST到GET的NEW_URL
CLIENT POST OLD_URL -> SERVER 302 NEW_URL -> CLIENT GET NEW_URL (redirect uses GET)
CLIENT POST OLD_URL -> SERVER 303 NEW_URL -> CLIENT GET NEW_URL (redirect uses GET)
307的ACTUAL:重定向在NEW_URL上使用相同的请求方法POST
CLIENT POST OLD_URL -> SERVER 307 NEW_URL -> CLIENT POST NEW_URL
区别在于重定向POST, PUT和DELETE请求,以及服务器对用户代理行为的期望(RFC 2616):
注意:RFC 1945和RFC 2068指定不允许客户端这样做 更改重定向上的方法 请求。然而,大多数现有用户 代理实现将302视为 这是303响应,执行一个 GET Location字段值 不管最初的请求是什么 方法。状态代码是303和307 已添加的服务器,希望 明确地说明是哪一种 的反应是预期的 客户端。
另外,请阅读维基百科关于30x重定向代码的文章。
在某些用例中,攻击者可能会滥用307重定向来了解受害者的凭据。
更多信息可以在OAuth 2.0的全面正式安全分析的3.1节中找到。
上述论文的作者建议如下:
Fix. Contrary to the current wording in the OAuth standard, the exact method of the redirect is not an implementation detail but essential for the security of OAuth. In the HTTP standard (RFC 7231), only the 303 redirect is defined unambigiously to drop the body of an HTTP POST request. All other HTTP redirection status codes, including the most commonly used 302, leave the browser the option to preserve the POST request and the form data. In practice, browsers typically rewrite to a GET request, thereby dropping the form data, except for 307 redirects. Therefore, the OAuth standard should require 303 redirects for the steps mentioned above in order to fix this problem.
307内部重定向的一个很好的例子是当谷歌Chrome遇到一个HTTP调用到一个域,它知道需要严格的传输安全。
浏览器使用与原始调用相同的方法无缝重定向。