重定向response.redirect与location.href 区别

前后端分离已经逐渐成为目前web开发的主流模式,前后端基于restful接口完成交互,直接跟浏览器交互的是前端页面,这种模式想要实现浏览器重定向的功能只能通过在页面JS脚本中添加location.href 的方式进行。比如访问a.html页面,a页面中添加window.location="b.html",就能实现a页面到b页面的跳转,但是因为a,b页面都是存静态页面,所以两次请求的http响应码都是200,a到b的跳转由浏览器解析JS脚本实现功能。这种模式下后端的restful接口一般不会存在302的http响应码,因为它不直接参与与浏览器交互。

在前后端分离还不是很流行的时候,我们一般在一个项目中同时包含前后端代码,请求由后端应用servlet映射解析之后转发到前端页面或后端接口。这种模式下,直接跟浏览器交互的就只有一个后端应用本身,实现重定向的功能可以在后端应用中通过添加response.redirect来实现,浏览器依然会发起两次请求,第一次请求http响应码是302,浏览器解析到302的状态码之后,会去响应头字段中寻找name为location的header字段,并将该头字段的值作为下一次请求的地址,正常一次跳转的情况下,第一次http响应码是302,第二次是200。

两种方式的跳转都是由浏览器来实现,一种是解析JS脚本,另一种则是解析http响应协议。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值