HTTP的重定向和跳转

本文为极客时间《透视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协议特别规定,浏览器必须具有检测”循环跳转“的能力,在发现这种情况时应当停止发送请求。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容