14 重定向和跳转

Posted by CodingWithAlice on April 25, 2021

14 重定向和跳转

  • 总结

    1、重定向是服务器发起的跳转,要求客户端改用新的 URI 重新发送请求,通常会 自动进行,用户是无感知的

    2、301/302 是最常用的重定向状态码,分别是 永久 重定向和 临时 重定向

    3、响应头字段 Location 指示了要跳转的 URI,可以用绝对或相对的形式

    4、重定向可以把一个 URI 指向另一个 URI,也可以把多个 URI 指向同一个 URI,用途很多

    5、使用重定向时需要当心性能损耗,还要 避免循环跳转

定义

  • 重定向

    1、服务器来发起的,浏览器使用者无法控制

    2、实际上发送了 两次 HTTP 请求,第一个请求返回了 302,然后第二个请求就被重定向到了响应头中Location 字段对应的地址

    3、Location 属于 响应字段,必须出现在响应报文里。但 只有配合 301/302 状态码 才有意义,它标记了服务器要求重定向的 URI

    4、Location 里既可以使用绝对 URI(带上 http 协议头),也可以使用相对 URIpath + query

重定向的相关问题

1、性能损耗

定向的机制决定了一个跳转会有 两次请求 - 应答,比正常的访问多了一次(站内链接可以通过长连接,如果站外就要重新进行TCP连接)

2、循环跳转

浏览器具有检测循环跳转的能力,在发现这种情况时会停止发送请求并给出错误提示