HTTP 基础知识之重定向和跳转

虽然你学的慢,但是你,放弃的快呀。

 

浏览器首先要解析链接文字里的URI。再用这个URI发起一个新的HTTP请求,获取响应报文后就会切换显示内容,渲染出新URI指向的页面。
这样的跳转动作是由浏览器的使用者主动发起的,可以称为“主动跳转”,但还有一类跳转是由服务器来发起的,浏览器使用者无法控制,相对地就可以称为“被动跳转”,这在HTTP协议里有个专门的名词,叫做“重定向”(Redirection)。

 

最常用的状态码 301 - 永久重定向 302 - 临时重定向

还有其他的 303, 306, 307  有些浏览器不支持,开发的时候需要测定

 

重定向的过程:

当浏览器收到对应的状态码时,就会跳到新的url

浏览器收到301/302报文,会检查响应头里有没有“Location”。如果有,就从字段值里提取出URI,发出新的HTTP请求,相当于自动替我们点击了这个链接。

 

应用场景:

1、当“资源不可用”,需要用另一个新的URI来代替

  例如:域名变更、服务器变更、网站改版、系统维护,这些都会导致原URI指向的资源无法访问,为了避免出现404,就需要用重定向跳转到新的URI,继续为网民提供服务。

2、需要“避免重复”,让多个网址都跳转到一个URI,增加访问入口的同时还不会增加额外的工作量。

  例如,有的网站都会申请多个名称类似的域名,然后把它们再重定向到主站上。比如,你可以访问一下“qq.com”“github.com ”“bing.com”(记得事先清理缓存),看看它是如何重定向的。

 

注意:重定向的用途很多,掌握了重定向,就能够在架设网站时获得更多的灵活性,不过在使用时还需要注意两个问题。

第一个问题:性能损耗:很明显,重定向的机制决定了一个跳转会有两次请求-应答,比正常的访问多了一次。

虽然301/302报文很小,但大量的跳转对服务器的影响也是不可忽视的。站内重定向还好说,可以长连接复用,站外重定向就要开两个连接,如果网络连接质量差,那成本可就高多了,会严重影响用户的体验。
所以重定向应当适度使用,决不能滥用。

第二个问题:循环跳转:如果重定向的策略设置欠考虑,可能会出现“A=>B=>C=>A”的无限循环,不停地在这个链路里转圈圈,后果可想而知。所以HTTP协议特别规定,浏览器必须具有检测“循环跳转”的能力,在发现这种情况时应当停止发送请求并给出错误提示。

 

posted @ 2021-11-25 09:01  方达达  阅读(224)  评论(0编辑  收藏  举报