美文网首页
HTTP的跳转和重定向

HTTP的跳转和重定向

作者: dashingqi | 来源:发表于2022-05-31 18:13 被阅读0次
    Android_Banner.jpg

    今天聊一个比较轻松的知识点,重定向;

    在聊重定向之前先说下HTTP中的跳转;

    在HTTP中跳转分为两种,【主动跳转】【被动跳转】

    主动跳转

    由客户端的使用主动发起的,称为主动跳转;

    被动跳转

    有一类跳转是由服务器发起的,客户端的使用者无法控制,我们称之为被动跳转;

    HTTP协议里面专门名词叫做【重定向】

    重定向

    回忆下之前学过重定向的知识

    301永久重定向

    302临时重定向

    当客户端收到上述两个状态码就会发起一个新的请求;

    那么它是怎么知道新请求的URI的呢?

    Location头字段

    如果此时状态码是【301】或者【302】时会在响应报文的头中包含Location字段

    Location /index.html

    这个Location字段就是用来告知你要新请求那个URI

    Location中携带的URI也分为【部分URI】和【完整URI】

    【完整URI】就不用说了,取出来就用

    当返回的是【部分URI】通常是仅有path和query部分

    这时就复用上一次的scheme、host:port 的值拼接拿到的path和query做一次新的请求;

    当遇见301和302时浏览器都干啥了

    相同的操作就是取道Lcoation的URI,进行新一次的跳转/请求;

    301

    称为永久重定向,意思就是你之前请求的URI过期了作废了,以后的请求都要用新的URI

    当浏览器看到这个301就知道怎么回事了,做适当的优化,保存新的URI,当下次请求时直接用这个新的URI

    少了一次请求;

    使用场景

    当【域名】、【服务器】发生大幅度改变,比如用了新域名、服务器切换到了新机房;

    原来的URI不能使用了,必须使用【301】;

    302

    称为临时重定向,原有的URI处于临时维护的状态,新的URI是当作替补,当原有的URI恢复了就可以继续使用了;

    使用场景

    原有的URI正在进行维护,会在将来某个时间会恢复的;

    常见的有系统维护,网站重定向到一个通知的页面;

    重定向相关问题

    性能损耗

    重定向中一个请求会有两次的【请求-应答】,比咱正常访问多了一次;

    循环跳转

    重定向策略设置有问题,可能会造成 【A==>B==>C==>A】

    在HTTP协议中规定,浏览器具有检测【循环跳转】的能力,遇到这种情况停止发送请求;

    相关文章

      网友评论

          本文标题:HTTP的跳转和重定向

          本文链接:https://www.haomeiwen.com/subject/phazprtx.html