本文为极客时间《透视HTTP协议》笔记
重定向相当于由服务器发起的跳转,浏览器的使用者无法控制
重定向的过程
在重定向的过程中,响应报文会出现一个新的头字段Location,如:”Location:/index.html“,Location字段只有配合301/302状态码才会有意义,它标记了服务器要求重定向的URI,这里就是要求浏览器跳转到”index.html“。
在重定向时如果只是在站内跳转,你可以放心地使用相对 URI。但如果要跳转到站外,就必须要绝对URI。
重定向的相关状态码
301俗称“永久重定向”(Moved Permanently ),意思是URI已经永久性的不存在了,以后的请求必须改用新的URI。
302俗称”临时重定向“(Moved Temprarily),意思是原URI处于”临时维护“状态。
303 See Other:类似 302,但要求重定向后的请求改为GET方法,访问一个结果页面,避免POST/PUT重复操作;
307Temporary Redirect:类似 302,但重定向后请求里的方法和实体不允许变动,比302更加明确
308 Permanent Redirect:类似 307,不允许重定向后的请求变动,但它是301”永久重定向“的含义
重定向的场景
1. 资源不可用 需要另一个新的URI来代替
2.避免重复,许多网址都跳转到一个URI,增加访问入口的同时还不会增加额外的工作量。
301永久的, 如果域名、服务器、网站架构发生了大幅度的改变,比如启用了新域名,服务器切到了新机房、网站目录层次重构等必须用301,通知浏览器和搜索引擎更新到新地址。
302临时,常见于系统维护,把网站重定向到一个通知页面,告诉用户过一会过来访问。另一种用法就是”服务降级“,比如在双十一促销的时候,把订单查询、领积分等不重要的功能入口暂时关闭,保证核心服务器能够正常运行。
重定向的场景
性能损耗
循环跳转
HTTP协议特别规定,浏览器必须具有检测”循环跳转“的能力,在发现这种情况时应当停止发送请求。