简介
3XX重定向,3XX响应结果标明浏览器需要执行某些特殊处理以正确处理请求。
301 状态码
永久性重定向,该状态码表示请求的资源已被分配到新的URI,这就代表你之前保存的书签已经没用了,需要换成新的URI。
302 状态码
临时性重定向,该状态码表示请求的资源已被分配了新的 URI, 希望用户(本次) 能使用新的 URI 访问,也就是说你不需要去更新保存的书签。只是临时性质。
303 状态码
该状态码表示由于请求对应的资源存在着另一个 URI, 应使用 GET方法定向获取请求的资源。
303 状态码和 302 Found 状态码有着相同的功能, 但 303 状态码明确表示客户端应当采用 GET 方法获取资源, 这点与 302 状态码有区别。
比如, 当使用 POST 方法访问 CGI 程序, 其执行后的处理结果是希望客户端能以 GET 方法重定向到另一个 URI 上去时, 返回 303 状态码。 虽然 302 Found 状态码也可以实现相同的功能, 但这里使用 303状态码是最理想的。
当 301、 302、 303 响应状态码返回时, 几乎所有的浏览器都会把POST 改成 GET, 并删除请求报文内的主体, 之后请求会自动再次发送。
301、 302 标准是禁止将 POST 方法改变成 GET 方法的, 但实际使用时大家都会这么做
304 状态码
如果客户端发送了一个带条件的GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个304状态码。简单的表达就是:服务端已经执行了GET,但文件未变化。
该状态码表示客户端发送附带条件的请求 ( If-Match, If-ModifiedSince, If-None-Match, If-Range, If-Unmodified-Since ) 时, 服务器端允许请求访问资源, 但未满足条件的情况。 304 状态码返回时, 不包含任何响应的主体部分。 304 虽然被划分在 3XX 类别中, 但是和重定向没有关系。
参数文献
- HTTP 图解