hoyong

导航

重定向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响应协议。
---------------------

posted on 2019-06-05 14:58  hoyong  阅读(1753)  评论(0编辑  收藏  举报