HTTP

HTTP 知识量:10 - 42 - 186

4.3 3XX重定向><

301 Moved Permanently- 4.3.1 -

301 Moved Permanently(永久性重定向) 表示请求的资源已被分配了新的URI,以后应使用资源现在所指的URI。例如:如果已经把资源对应的URI保存为书签,这时应该按Location首部字段提示的URI重新保存。

当给出的请求URI指定的资源路径最后忘记添加斜杠“/”,就会产生301状态码:

http://pnotes.cn/box

302 Found- 4.3.2 -

302 Found(临时性重定向) 表示请求的资源已被分配了新的URI,希望用户本次能使用新的URI访问。

302状态码与301状态码相似,但302状态码代表的资源不是被永久移动,只是临时性质的。也就是说,已经移动的资源对应的URI将来还有可能发生改变。

303 See Other- 4.3.3 -

303 See Other 表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源。

303状态码和302状态码有着相同的功能,在303状态码明确表示客户端应当采用GET方法获取资源。

当使用POST方法访问CGI程序,其执行后的处理结果是希望客户端能以GET方法重定向到另一个URI上去,因此要返回303状态码。虽然302状态码也可以实现相同的功能,但这里使用303状态码是最合适的。

当301、302、303状态码返回时,几乎所有的浏览器都会把POST改成GET,并删除请求报文内的主体,之后请求会自动再次发送。

304 Not Modified- 4.3.4 -

304 Not Modified 表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但发生了未满足请求条件的情况,因此返回304。

304状态码返回时不包含任何响应的主体部分。

304虽然被划分在3XX类别中,但是和重定向没有关系。

307 Temporary Redirect- 4.3.5 -

307 Temporary Redirect 表示临时重定向,307状态码与302状态码有着相同的含义。

尽管302标准禁止请求方法由POST变成GET,但实际使用时大家并不遵守。307会遵照浏览器标准,不会从POST变成GET,但是对于处理响应时的行为,每种浏览器有可能出现不同的情况。