HTTP状态码301、302重定向的区别
官方的比较简洁的说明:
- 301 redirect:301 代表永久性转移(Permanently Moved)
- 302 redirect:302 代表暂时性转移(Temporarily Moved)
交互流程
客户端在请求网址A时,服务端将其重定向到网址B,响应301或者302状态码,并携带Location响应头,其值就是网址B,客户端接收到301或者302响应后,从响应头中获取Location的值,便再次发送请求到网址B,最终将呈现网址B的响应内容
搜索引擎的区别
- 301表示旧地址A的资源已经被永久地移除了(这个资源不可访问了),搜索引擎在抓取新内容的同时也将旧的网址A替换为重定向之后的网址
- 302表示旧地址A的资源还在(仍然可以访问),这个重定向只是临时地从旧地址A跳转到地址B,搜索引擎会抓取新的内容而保存旧的网址A
网址劫持
302跳转存在网址劫持,什么是网址劫持?也就是说,一个不道德的人在他自己的网址A做一个302重定向到你的网址B,当用户访问网址A的时候显示的内容却是你的网址B上的内容,这种情况就叫做网址劫持,你辛辛苦苦做出来的网站被别人轻易的盗用了。
补充说明
- 无论301还是302,如果直接在浏览器地址栏上输入旧网址A访问时,地址栏中最终都会显示为重定向后的网址B