HTTP协议中的302,303状态码

面试常用的HTTP协议@TOC

两次面试都被面试官问HTTP协议中的302,303状态码

之前也只知道302,303是请求重定向,但是当被问到302,303的具体区别是什么的时候我有点迷,现在就为了加强记忆,来了解下具体情况:
302是http1.0的内容,303是http1.1的内容。
301和302本来在规范中是不允许重定向时改变请求方法的(将POST改为GET),但是许多浏览器却允许重定向时改变请求方法(这是一种不规范的实现)。
303的出现正是为了给上面的301,302这种行为作出个规范(将错就错吧),也就是允许重定向时改变请求方法。此外303响应禁止被缓存。
HTTP协议中的302,303状态码
永久是指原来访问的资源已经永久删除啦,客户端应该根据新的URI访问重定向。
临时是指访问的资源可能暂时先用location的URI访问,但旧资源还在的,下次你再来访问的时候可能就不用重定向了。
故301与302的区别:
301表示搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址;302表示旧地址A的资源还在(仍然可以访问),这个重定向只是临时地从旧地址A跳转到地址B,搜索引擎会抓取新的内容而保存旧的网址。
303的使用场景几乎没有,参考302

什么是HTTP状态码

HTTP状态码的作用是:web服务器用来告诉客户端,发生了什么事。状态码位于HTTP Response 的第一行中,会返回一个”三位数字的状态码“和一个“状态消息”。 ”三位数字的状态码“便于程序进行处理, “状态消息”更便于人理解。

HTTP状态码分类

状态码一共分为五类
HTTP协议中的302,303状态码