美文网首页
redirect和forward的区别

redirect和forward的区别

作者: FTOLsXD | 来源:发表于2017-02-12 15:59 被阅读105次

1.从地址栏显示来说

forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.
redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.

2.从数据共享来说

forward:转发页面和转发到的页面可以共享request里面的数据.
redirect:不能共享数据.

3.从运用地方来说

forward:一般用于用户登陆的时候,根据角色转发到相应的模块.
redirect一般用于用户注销登陆时返回主页面和跳转到其它的网站等.

4.从效率来说

forward:高.
redirect:低.

本质区别

forward过程

转发,服务器端行为。web服务器把接受的请求,调用内部的方法在容器内部完成请求处理和转发动作,然后响应客户端,在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。

redirect过程

重定向,客户端行为。客户端发送http请求,web服务器接受后发送3**状态码响应及对应新的location给客客户端,客户端发现是3**响应,则自动再发送一个新的http请求,请求url是新的location地址,在这里location可以重定向到任意URL,既然是浏览器重新发出了请求,则就没有什么request传递的概念了。重定向行为是浏览器做了至少两次的访问请求的。

通俗的比喻

forward:你先去A局办事,A局看了以后,知道这个事情其实应该B局来管,但是他没有把你退回来,而是让你坐一会儿,自己到后面办公室联系了B的人,让他们办好后,送了过来。
redirect:你先去了A局,A局的人说:“这个事情不归我们管,去B局”,然后,你就从A退了出来,自己乘车去了B局办。

进而带来的区别

forward方式客户端肯定不知道啊,所以地址栏不变,中间过程加上其他参数地址栏也看不到,转发的url肯定不能是外部的,直接在服务器端内部的周转,所以request的参数能在新的方法里获取到,所以效率也比较高一些。redirect方式就与其相反了!

相关文章

  • 开发混淆知识点

    Forward和Redirect的区别 简述: Forward(转发):直接请求 Redirect(重定向):间接...

  • forward()和redirect()区别

    forward():仅仅是容器的控制权的转向。还是原来的请求,是服务器的转向,浏览器的地址不会发生改变,是再一次请...

  • Forward和Redirect的区别

    Java常见面试题之Forward和Redirect的区别

  • 请求转发(Forward)和重定向(Redirect)的区别

    原作者:萌小Q原博客链接:请求转发(Forward)和重定向(Redirect)的区别 forward(转发): ...

  • forward 和 redirect的区别

    从地址栏显示来说forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然...

  • redirect和forward的区别

    1.从地址栏显示来说 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过...

  • 常见面试题

    1. forward(转发)和redirect(重定向)的区别: forward是服务器行为,服务器请求资源,...

  • 2018-08-21笔试题

    来电科技-初级Java工程师 forward 和redirect的区别JAVA常见面试题之Forward和Redi...

  • redirect与forward区别

    首先,简单一句话:redirect是浏览器去请求,forward是服务器端去请求 redirect, forwar...

  • forward和redirect

    如果/hello就是某个controller的映射,想要转发这个controller。 可以通过forward 前...

网友评论

      本文标题:redirect和forward的区别

      本文链接:https://www.haomeiwen.com/subject/awuaittx.html