302
和303
之间的区别是什么?
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
这些是可以互换的吗?或者为什么会互相使用? 你能否提供一个用例(什么时候可以使用)?
您链接到的页面上的描述似乎是对其预期目的的相当描述:
302redirect表示redirect是临时的 – 客户端应该在以后的请求中检查原始URL。
303redirect意味着将POST
请求redirect到GET
资源(否则,客户端会假定新位置的请求方法与原始资源的请求方法相同)。
如果您将客户端redirect为Web应用程序的一部分,但希望他们始终从Web应用程序开始(例如URL缩写),则302redirect似乎有意义。 303redirect用于从客户端接收POST
数据(例如表单提交),并且您希望将它们redirect到使用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.
有四种不同的redirecttypes(当前)。 本来只有两个,但大多数客户端实现了302redirect不正确,所以增加了两个,以澄清两个不同的可能行为之间的差异接收302。
您链接的RFC在302redirect部分陈述了这一点:
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.
老客户可能不了解303redirect。 任何使HTTP / 1.1请求的东西都应该理解303响应。
有可能将300个和305个响应视为redirect,这意味着有六种不同的types。
使用redirecttypes(301,302,303 …)对search引擎如何索引和排列内容有很大的影响。 一些蜘蛛甚至可能拒绝临时redirect的内容。 详情可以在各种SEO文献中find…