302 与 303 的示例

302 与 303 的示例

302a和response有什么区别303

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

  • 10.3.3 302 找到
  • 10.3.4 303 查看其他

它们可以互换吗?或者为什么会使用其中一种而不是另一种?您能否提供一个何时使用其中一种(而不使用另一种)的用例?

答案1

您链接到的页面上的描述似乎相当清楚地描述了它们的预期用途:

302 重定向表示重定向是暂时的——客户端应该在未来的请求中检查原始 URL。

303 重定向旨在将POST请求重定向到GET资源(否则,客户端会假定新位置的请求方法与原始资源相同)。

如果您将客户端重定向作为 Web 应用程序的一部分,但希望它们始终从 Web 应用程序开始(例如,URL 缩短器),则 302 重定向似乎很有意义。303 重定向适用于当您POST从客户端接收数据(例如,表单提交)并且想要将它们重定向到要检索的新网页(GET而不是POST(例如,标准页面请求))时使用。

但是从状态代码定义中可以看到这一点——大多数客户端都会对 302 或 303 执行相同的操作:

  Note: RFC 1945 and RFC 2068 specify that the client is not allowed
  to change the method on the redirected request.  However, most
  existing user agent implementations treat 302 as if it were a 303
  response, performing a GET on the Location field-value regardless
  of the original request method. The status codes 303 and 307 have
  been added for servers that wish to make unambiguously clear which
  kind of reaction is expected of the client.

答案2

有五种不同的重定向类型。最初只有两种(301 和 302),但大多数客户端都错误地实现了它们,因此又添加了三种,以澄清两种不同可能行为之间的区别。

您链接到的 RFC 在 302 重定向部分中说明了这一点:

  Note: RFC 1945 and RFC 2068 specify that the client is not allowed
  to change the method on the redirected request.  However, most
  existing user agent implementations treat 302 as if it were a 303
  response, performing a GET on the Location field-value regardless
  of the original request method. The status codes 303 and 307 have
  been added for servers that wish to make unambiguously clear which
  kind of reaction is expected of the client.

原始重定向

  • A301redirect 是永久重定向。它是可缓存的,并且此 URL 的所有书签都应更新以指向新 URL。
  • A302redirect 是临时重定向。默认情况下,它不可缓存,每次都需要重新请求(但您可以使用缓存标头覆盖此操作)。

对于以上两种情况,后续请求都应使用与原始请求相同的方法(POST、GET、CONNECT、PUT、DELETE 等),对于除 GET 和 HEAD 请求之外的任何请求,客户端都应在发出请求之前提示用户。

不幸的是,客户端有时会在这一部分出错,大多数客户端会将后续请求的方法更改为 GET,而不管原始方法是什么。因此,又创建了三个重定向代码:

较新的重定向

  • A303重定向与 302(即临时)相同,只是后续请求现在明确更改为 GET 请求,并且不需要确认。
  • A307重定向与 302(即临时)相同,只是后续请求现在明确与原始请求相同,并且对于除 GET 和 HEAD 之外的请求方法必须从用户那里获得确认。
  • A308重定向与 301(即永久重定向)相同,只是请求方法和正文不会改变。

现代客户端不应该对这些较新的重定向有任何问题。

答案3

使用的重定向类型(301、302、303……)对搜索引擎如何索引和排名内容有很大影响。一些蜘蛛甚至可能拒绝索引临时重定向的内容。详细信息可以在各种 SEO 文献中找到……

相关内容