phalcon中重定向和发送的区别是什么?

时间:2015-01-12 10:37:13

标签: phalcon

当我想要更改为其他网页时,我可以找到$this->dispatcher->forward()$this->response->redirect()。两者似乎都运作正常。

它们之间有什么区别,我何时应该使用另一个?

1 个答案:

答案 0 :(得分:7)

从广义上讲,Redirect将执行http重定向(带有标头位置)。这意味着客户端的浏览器将更改页面。它处理到新的路由(它也可以用于转到另一个网站),实际的脚本将结束。

尽管Forward是内部的,但客户端的浏览器不会看到任何差异,您只需执行不同的控制器。调度循环允许用户将执行流转发到另一个控制器/操作。这对于检查用户是否可以访问某些选项,将用户重定向到其他屏幕或仅重用代码非常有用。但是,请记住,制作“转发”与进行HTTP重定向不同。虽然他们显然得到了相同的结果。 “forward”不会重新加载当前页面,所有重定向都发生在单个请求中,而HTTP重定向需要两个请求来完成该过程。

类似的类比也可以在JSP中显示,

sendRedirect(String path)的{​​{1}}方法将告诉客户端它应该向指定路径发送请求。因此,客户端将构建一个新请求并将其提交给服务器。客户端的历史记录将会更新,因此前进和后退按钮将起作用。此方法对于重定向到其他服务器和域上的页面非常有用。

HttpServletResponse的转发方法会将RequestDispatcherServletRequest转发给ServletResponse中指定的路径。回复不会被发回客户端,因此客户端将不知道服务器上的此资​​源更改。此方法对于服务器资源(servlet到servlet)之间的通信非常有用。此方法比使用getRequestDispatcher(String path).更快,因为没有网络往返服务器并且需要返回。