一、前言
使用jmeter录制脚本,访问博客时,返回状态码301。一直对HTTP状态码301和302的理解不清晰,通过查阅别人的博客以及jmeter实战,对状态码301和302有了初步的了解。本文主要简单HTTP状态码301和302的相同点与不同点。
二、相同点与不同点
简洁来说:
301:代表永久性转移(Moved Permanently)
302:代表暂时性转移(Moved Temporarily)
共同点:状态码301和302都表示重定向,意思是浏览器拿到服务器返回的某个状态码后会自动跳转到一个新的url地址,这个地址可以从响应的Location首部中获取(用户看到的效果是他输入的地址A瞬间变成了另一个地址B)
不同点:301表示旧地址A的资源已经被永久地移除了(即这个资源不可访问了),搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址;302表示旧地址A的资源还在(即仍可以访问),这个重定向只是临时地从旧地址A跳转到地址B,搜索引擎会抓取新的内容而保存旧的网址。
三、灵魂问答
1.什么是重定向?
答:地址A跳转到地址B。百度百科的解释:重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置(如:网页重定向、域名的重定向、路由选择的变化也是对数据报文经由路径的一种重定向)。
2.什么时候需要重定向?为什么要进行重定向?
答:(1)网站调整(如改变网页目录结构);(2)网页被移到一个新地址;(3)网页扩展名改变(如应用需要把.php改成.html或.shtml)
原因:以上情况,如果不做重定向,用户收藏夹或搜索引擎数据库中旧地址只能返回404页面错误信息给访问用户,导致访问流量白白丧失;而且,某些注册了多个域名的网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点等
3.什么时候进行301或302跳转?
答:301比较常用的场景是使用域名跳转。比如,我们访问http://www.baidu.com会跳转到https://www.baidu.com,发送请求后,会返回301和一个Location,提示新的地址,浏览器就会拿这个新的地址去访问。
总结使用301跳转的场景: