HTTP3xx重定向

前言

重定向基本上会配合Location首部字段来使用。301、302、304是HTTP1.0定义的,303、307是HTTP1.1定义的。


301

永久性重定向,该状态码表示请求的资源已被分配了新的URI,以后应使用Location指定的URI,如果已经保存为书签的,这时应该更新书签。


302

和301类似,但是表示资源是临时性移动,已移动资源对应的URI将来还可能发生改变,因此不需要更新书签。
301和302标准是禁止将post请求改变为get请求的,即原先使用post的请求,收到301和302的响应时,不能使用get请求Location指定的URI,而是应该得到用户的确认,然后使用post请求Location指定的URI。但是很多浏览器为了方便,直接略过用户确认,并使用get请求Location指定的URI。


303

和302类似,但是标准明确规定客户端应使用get请求Location指定的URI。
上面所述的浏览器不规范的做法,其实就是303的定义。浏览器对303状态码的处理跟原来浏览器对HTTP1.0的302状态码的处理方法一样。为兼容很多HTTP1.1之前的浏览器,服务端在需要发出303状态码时,会选择用302状态码替代。


307

相当于302,由于浏览器对于302标准并不遵守,因此定义307来代替302。post请求不会改变为get请求。


304

虽然被划分到3xx,但是304其实和重定向没有任何关系。

你可能感兴趣的:(Http)