重定向介绍

  • 概念

    • 由服务器来发起的,浏览器使用者无法控制,相对地就可以称为“被动跳转”,在 HTTP 协议里叫做“重定向”(Redirection)。
    • “Location”字段属于响应字段,必须出现在响应报文里。但只有配合 301/302 状态码才有意义,它标记了服务器要求重定向的 URI。
    • 浏览器收到 301/302 报文,会检查响应头里有没有“Location”。如果有,就从字段值里提取出 URI,发出新的 HTTP 请求,相当于自动替我们点击了这个链接。
    • 响应头字段 Location 指示了要跳转的 URI,可以用绝对或相对的形式。
  • java代码中的一种实现方式:

  • 永久重定向&临时重定向

    • 永久重定向:是指原来访问的资源已经永久删除啦,客户端应该根据新的URI访问重定向。
    • 临时重定向:是指访问的资源可能暂时先用location的URI访问,但旧资源还在的,下次你再来访问的时候可能就不用重定向了。
  • 重定向的状态码

    Permanent(永久) Temporary(临时)
    Allows changing the request method from POST to GET. 301 302
    Does not allow changing the request method from POST to GET. 308 307
  • 状态码区别

    • 301,302是http1.0的内容,303、307、308是http1.1的内容。
    • 301和302本来在规范中是不允许重定向时改变请求方法的(将POST改为GET),但是许多浏览器却允许重定向时改变请求方法(这是一种不规范的实现)。
    • 303的出现正是为了给上面的301,302这种行为作出个规范(将错就错吧),也就是允许重定向时改变请求方法。此外303响应禁止被缓存。
    • 307和308的出现也是给上面的行为做个规范,不过是不允许重定向时改变请求方法。
  • 不同状态码的使用场景

    • 301
      1. 域名到期不想续费(或者发现了更适合网站的域名),想换个域名。
      2. 在搜索引擎的搜索结果中出现了不带www的域名,而带www的域名却没有收录,这个时候可以用301重定向来告诉搜索引擎我们目标的域名是哪一个。
      3. 空间服务器不稳定,换空间的时候。
    • 302
      1. 未登录前先使用302重定向到登录页面,登录成功后再跳回到原来请求的页面。
      2. 有时候需要自动刷新页面,比如5秒后回到订单详细页面之类。
      3. 有时系统进行升级或者切换某些功能时,需要临时更换地址。
      4. 像微博之类的使用短域名,用户浏览后需要重定向到真实的地址之类。
      5. 电脑端与移动端的转换.比如我访问网页端页面https://www.taobao.com/,302重定向到了移动端页面m.taobao.com。
    • 307
      • 与302类似,只不过请求时不允许改变请求方式。

来源:https://www.cnblogs.com/wuguanglin/p/redirect.html

posted @ 2022-06-12 15:32  扬帆去远航  阅读(983)  评论(0编辑  收藏  举报