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
协议头),也可以使用相对URI
(path + query
)
重定向的相关问题
1、性能损耗
定向的机制决定了一个跳转会有 两次请求 - 应答,比正常的访问多了一次(站内链接可以通过长连接,如果站外就要重新进行TCP连接)
2、循环跳转
浏览器具有检测循环跳转的能力,在发现这种情况时会停止发送请求并给出错误提示