关于请求转发与重定向区别及应用场景
做web项目的安全退出后跳转到登录页面功能
突然想到
请求转发与重定向之间的区别
还有应用场景的问题
感觉自己混淆概念了、特此记一下;
定义
-
请求转发
浏览器向服务器发起仅一次请求、
服务器可以多次转发这个请求,寻找同一web程序下的资源
然后将结果返回给浏览器举例说明
劫匪朝要张三100W(request),
不管他是朝几个人、怎么借的、(内部多次转发)
打钱给劫匪(response)
但张三只能是朝自己认识的人借钱(调用你认识的人、内部资源) -
重定向
浏览器想服务器发起第1次请求
服务器返回第1个结果一个url和状态码302
然后浏览器发起第2次请求
使用服务器返回的url、这次请求的范围甚至可以是其余站外的资源
访问这个url会导致地址栏的url的改变
然后服务器返回第2个结果到浏览器依旧举例说明
你来问一个熟人问题(request-1)
熟人说不会(response-1)让你去度娘问(url)
你去度娘问网友(调用非熟人的资源、request)
得到了答案(response)
应用场景
请求转发的挑战、为同一业务功能服务
重定向偏向于、不同业务功能之间的跳转
另外请求转发与重定向我个人觉得很明显的一个区别就是:
如果应该使用重定向的地方、
使用请求转发会有重复操作的隐患
实例说明
-
实现功能:查询学生列表
点击查询后、在页面内显示学生列表很明显、此功能为同一业务功能——查询学生列表
此时选择使用请求转发来跳转页面更为合适、
-
实现功能:新增学生后显示学生列表
新增学生后、在页面内显示学生列表此业务分类为两个、一个是新增、一个是查询
因此使用重定向更为合适因为重定向是全局刷新
特别的是:
如果在结果页面F5刷新不会重新新增学生
但是在这里使用请求转发的话、url不改变
F5刷新页面、会导致数据重复提交、
也就是不断新增同一个学生的数据