你在刷淘宝的时候有没有注意到,点击商品链接时地址栏的网址始终是taobao.com?但有时候在银行网站登录失败,地址栏会突然变成login.bank.com/error这样的陌生地址?这两种现象背后藏着两个重要的技术概念——forward(转发)和redirect(重定向)。今天咱们就掰开揉碎了讲明白这对双胞胎兄弟的区别。
先打个比方:你去餐馆点菜,服务员说”这道菜现在没食材”,这时候可能有两种处理方式。第一种是服务员自己跑去后厨确认,回来告诉你”确实没有,换道菜吧”(这就是forward)。第二种是服务员直接跟你说”这事儿我管不了,你自己去找厨师长”(这就是redirect)。发现区别了吗?前者是内部悄悄处理,后者是让你自己重新跑腿。
核心区别在浏览器地址栏。当你用forward的时候,浏览器根本不知道中间发生了什么,地址栏显示的始终是最开始的地址。比如在Java Web开发中,用户访问A页面,服务器偷偷把请求转给B页面处理,但用户看到的还是A页面的地址。而redirect就像给你发了个定位,浏览器会老老实实跟着新地址重新加载页面,所以地址栏会变成全新的网址。
这里有个坑要注意:redirect会多一次网络请求。整个过程是”浏览器→服务器→浏览器→新服务器”,相当于绕了个大圈。而forward只在服务器内部流转,就像两个同事在办公室传递文件,不需要再跑出去寄快递。所以对用户来说,redirect的加载时间往往更长,特别是在网络不好的时候特别明显。
什么时候该用哪个呢?记住这三点: 1. 需要保留原始请求数据时用forward(比如表单填错了要回显数据) 2. 需要防止重复提交必须用redirect(比如网购付款成功后必须跳转) 3. 跨系统跳转只能用redirect(比如从淘宝跳到支付宝支付)
举个栗子:你在论坛发帖失败,网站要保留你刚输入的内容让你修改,这时候用forward就能把数据原封不动带回来。但如果是微信扫码登录第三方网站,扫码成功后必须用redirect跳回原网站,这时候地址栏变成weixin.qq.com再跳回来,整个过程用户看得明明白白。
新手容易踩的雷区是把forward当redirect用。比如用户提交订单后,如果用forward跳转到支付页面,这时候用户刷新浏览器就会重复提交订单。而用redirect的话,刷新只会重新加载支付页面,不会重复创建订单。这个细节搞错了,分分钟会被用户投诉重复扣款。
现在回到最开始的问题:为什么淘宝商品页地址不变而银行出错页会变?因为淘宝用的是forward保持用户体验连贯性,而银行出错必须用redirect确保信息安全——当登录失败时,必须彻底切断之前的请求链,防止敏感信息残留在浏览器历史记录里。
小编当年学这个的时候,总记不住这两种跳转的区别。后来发现只要盯着地址栏变化就能判断:地址不变的是forward,变得像变魔术的是redirect。下次看到网页跳转时,不妨注意观察地址栏,你也能一眼看出网站用了哪种技术!
免责声明:网所有文字、图片、视频、音频等资料均来自互联网,不代表本站赞同其观点,内容仅提供用户参考,若因此产生任何纠纷,本站概不负责,如有侵权联系本站删除!邮箱:207985384@qq.com https://www.ainiseo.com/hosting/35171.html