http学习 重定向和跳转

主动跳转和被动跳转

主动跳转:跳转动作是通过浏览器的使用者发起的

被动跳转:跳转动作是通过浏览器自动进行的,称为『重定向』

 

重定向状态码

301 永久重定向 原URI永久的不存在了,今后的所有请求都必须改用新的URI

  浏览器看到 301,就知道原来的 URI“过时”了,就会做适当的优化。比如历史记录、更新书签,下次可能就会直接用新的 URI 访问,省去了再次跳转的成本。搜索引擎的爬虫看到 301,也会更新索引库,不再使用老的 URI。

302 临时重定向 原URI处于“临时维护”状态,新的URI是起“顶包”作用的临时工。

  浏览器或者爬虫看到 302,会认为原来的 URI 仍然有效,但暂时不可用,所以只会执行简单的跳转页面,不记录新的 URI,也不会有其他的多余动作,下次访问还是用原 URI。

303 see other:重定向以后改成了GET方法,访问一个结果页,避免Post、put重复操作

307 Temporary Redirect:类似 302,但重定向后请求里的方法和实体不允许变动,含义比 302 更明确;

308 Permanent Redirect:类似 307,不允许重定向后的请求变动,但它是 301“永久重定向”的含义。

 

重定向的场景

一个最常见的原因是『资源不可以用』,需要另一个URI来代替

  不可用的原因:如域名变更,服务器变更,网站改版,系统维护

另一个原因就是『避免重复』,让多个网址都跳转到同一个URI,增加访问入口的同时还不增加额外的工作量

  如有的网站是申请多个域名,然后把他们重定向到主站上

 

外部重定向和内部重定向

外部重定向:服务器会把重定向的地址给浏览器,然后浏览器再次的发起请求,地址栏的地址变化了。

内部重定向:服务器会直接把重定向的资源返给浏览器,不需要再次在浏览器发起请求,地址栏的地址不变。

重定向,主要用在未登录或者权限不足的场景,跳转到对应的登录或提升页面之中。

当然,通用的SSO(单点登录)也是这样做的。

ps: 转发是服务器内部重定向

 

重定向的相关问题

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

第二个问题是『循环跳转』。如果重定向的策略没有设置好,可能会出现A->B->C->A的无限循环。

 

posted @ 2022-02-09 11:54  r1-12king  阅读(199)  评论(0编辑  收藏  举报