美文网首页
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的重定向和跳转

    重定向 当我们链接URL的时候,URL会发起一个新的HTTP请求,获取响应报文后就会切换显示内容,渲染出新的URL...

  • HTTP的跳转和重定向

    今天聊一个比较轻松的知识点,重定向; 在聊重定向之前先说下HTTP中的跳转; 在HTTP中跳转分为两种,【主动跳转...

  • 响应

    今日内容 HTTP协议: Response对象 案例:1. 完成重定向* 重定向:资源跳转的方式* 代码实现: 比...

  • jQuery跳转到另一个页面

    1.我们可以利用http的重定向来跳转 window.location.replace("http://www.b...

  • Apache https301重定向跳转http规则方法教程

    https如何强制301重定向到http?网上都是关于http 301跳转到https的教程,如果不想开启http...

  • nginx https访问php405错误

    nginx配置ssl 与80跳转443(301)重定向方法链接 http://www.jianshu.com/p/...

  • Java 中Redirect和Forward

    Java中连接跳转的2中方式Redirect和Forward (重定向)Redirect 重定向是把request...

  • flask+nginx+gunicorn部署redirect重定

    问题描述: nginx部署之后一般的跳转会是https://域名但是flask重定向之后会访问http://域名:...

  • HTTP重定向

    301,302,303,307 301是永久重定向,常用的场景是使用域名跳转。 比如,我们访问 http://ww...

  • HTTP重定向

    301,302,303,307 301是永久重定向,常用的场景是使用域名跳转。 比如,我们访问http://www...

网友评论

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

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