302
和303
响应有什么区别?
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
- 10.3.3找到302
- 10.3.4 303查看其他
这些是可互换的,还是为什么要在另一个之上使用?您能否提供一个用例(何时不使用)?
302
和303
响应有什么区别?
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
这些是可互换的,还是为什么要在另一个之上使用?您能否提供一个用例(何时不使用)?
Answers:
您链接到的页面上的描述似乎可以描述其预期目的:
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.
有四种不同的重定向类型(当前)。最初只有两个,但是大多数客户端错误地实现了302重定向,因此又添加了两个以阐明接收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.
较旧的客户端可能无法理解303重定向。发出HTTP / 1.1请求的所有内容都应理解303响应。
可以将300和305响应视为重定向,这意味着有六种不同类型。