面试连环炮系列(十四): HTTP状态码302的跳转逻辑

面试连环炮系列(十四): HTTP状态码302的跳转逻辑

  1. HTTP状态码302的跳转逻辑
    302状态码表示重定向,浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取(用户看到的效果就是他输入的地址A瞬间变成了另一个地址B。

  2. 302与301的区别和使用场景
    301是永久重定向,而302是临时重定向。301适合做永久重定向; 302适合做临时的跳转。

    • 301的定义:301 Moved Permanently 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一。如果可能,拥有链接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址。除非额外指定,否则这个响应也是可缓存的。
    • 302的定义:302 Found 请求的资源现在临时从不同的URI响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。
  3. 服务器端跳转和客户端跳转的区别

    • 服务器端跳转就是指地址栏内容不变(客户端浏览器的地址栏不会显示目标地址的URL),客户端请求到达以后,服务器发现当前资源给不出回应,在服务器内部请求另一个资源的跳转。所以跳转与否客户端不知道,属于一次请求。
    • 客户端跳转是指地址栏内容发生改变,客户端再根据服务器端给的响应中的URL再向服务器发送请求,所以是两次请求。客户端请求到达服务端,服务端返回一个 “去访问其他链接” 的回应。

参考(部分摘抄的文字版权属于原作者):

https://www.cnblogs.com/wanglei957/p/11114912.html
https://www.cnblogs.com/ryelqy/p/10104131.html

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注