转发与重定向的区别

mac2022-06-30  110

无论是转发,还是重定向,都可以让客户端看到某个页面

转发是一种服务器内部的行为,大致的处理流程是“控制器接收到请求,进行处理,得到某些数据,再将某些数据交给模板,这些数据将被模板中的表达式所解读,得到带数据的HTML页面,最终,该HTML页面将被响应到客户端”。

重定向是当服务器处理完客户端的请求后,告诉客户端“还需要发送第二次请求的位置”,然后,由客户端发出第二次请求,然后看到新的页面

所以,转发时,客户端其实只发送了1次请求,服务器端内部的多个组件之间可以传递数据,转发的数据是封装在请求对象(request对象)中的; 重定向是客户端发出第一次请求后,服务端处理完后响应了302响应码及目标位置,由客户端再次发出第二次请求,由于Http协议是无状态的,在没有使用其他技术处理之前,多次处理请求时产生的数据是不可以传递的!

在具体的表现方面,转发时,客户端的浏览器的地址栏不会发生变化,如果刷新,会重新提交此前的请求及相关数据; 重定向时,整个过程中存在多次请求,客户端的浏览器的地址栏会显示最后一个请求的路径,刷新时,也只还会重新提交最后一次请求。

转发和重定向的最大区别是客户端请求的次数 我:服务器 借钱的人:客户端 重定向:先找我借钱,我没有钱,然后我让它去找另一个人去借 转发:向我借钱,我没有钱,我去借钱给它。

最新回复(0)