前言
在公司小程序内嵌H5相关页面在做收银台区分跳转时,了解到了一些有关浏览器302相关的有趣故事,分享给大家。
地址栏的302
在网页输入一个地址后,如果当前地址返回302,301的状态码。浏览器会自动跳转到Response header中指定的Location指定的地址。如下图:
到这里开始我们进入我们今天要聊的正题:
在地址栏浏览器帮我们自动重定向了,那我们如果通过XHR来发送请求后
1:如果相应是302的话,也会帮我们自动跳转吗?
2:如果自动跳转,我们如何知道已经发生了跳转呢?
3:有没有什么办法可以拦截这种行为?
心急的同学直接看最后两部分即可,中间是一些演示DEMO以及示例。
业务场景
之前的业务再跳转收银台时,会携带大量的参数直接通过window.location交给后端去处理,收银台的页面属于后端PHP页面。在小程序开发过程中,由于后端接口逻辑较多,所以决定通过前端解析后端PHP页面接口来获取订单号然后调用小程序路由跳转函数去走小程序的收银台。所以,前端不能再走window.location的方式去直接扔给后端去处理。具体处理流程见下图: