请问重定向与请求转发有什么区别?

如题所述

一、目标不同

转发是服务器行为,重定向是客户端行为 。

二、请求次数不同

1、重定向是两次request 。

第一次,客户端request一个网址,服务器响应,并response回来,告诉浏览器,你应该去别一个网址。

2、请求转发只有一次请求

三、网址定位不同

重定向的网址可以是任何网址,请求转发只能是指定网址。

四、导致的结果不同

不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户得到一个404页面错误信息,访问流量白白丧失;再者某些注册了多个域名的网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点等。

1、网站调整(如改变网页目录结构);

2、网页被移到一个新地址;

3、网页扩展名改变(如应用需要把.php改成.Html或.shtml)。

参考资料:百度百科-重定向

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2019-11-03

重定向和请求转发的区别

1、重定向是两次请求,转发是一次请求,因此转发的速度要快于重定向

2、重定向之后地址栏上的地址会发生变化,变化成第二次请求的地址,转发之后地址栏上的地址不会变化,还是第一次请求的地址

3、转发是服务器行为,重定向是客户端行为。重定向时浏览器上的网址改变 ,转发是浏览器上的网址不变

4、重定向是两次request,转发只有一次请求

5、重定向时的网址可以是任何网址,转发的网址必须是本站点的网址

扩展资料:

网站重定向的注意事项

1.若准备将服务器上的文件移到其它地方时,须就以下信息正确地通知搜索引擎的爬行程序:

目标地址:这些文件被移向何方

移动属性:暂时移走还是永久性移走

2.对拥有多个域名的网站,专家建议应把那些不想在搜索引擎上推广的域名用301跳转命令来永久性重定向,确保网站实施了正确的301重定向。

参考资料:重定向-百度百科



本回答被网友采纳
第2个回答  推荐于2019-09-08

请求转发和重定向的区别:

(一)、request.getRequestDispatcher()是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;服务器内部转发,整个过程处于同一个请求当中。

response.sendRedirect()则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。不在同一个请求。重定向,实际上客户端会向服务器端发送两个请求。

所以转发中数据的存取可以用request作用域:request.setAttribute(), request.getAttribute(),重定向是取不到request中的数据的。只能用session。

(二)、forward()更加高效,在可以满足需要时,尽量使用RequestDispatcher.forward()方法。 

(三)、RequestDispatcher是通过调用HttpServletRequest对象的getRequestDispatcher()方法得到的,是属于请求对象的方法。

sendRedirect()是HttpServletResponse对象的方法,即响应对象的方法,既然调用了响应对象的方法,那就表明整个请求过程已经结束了,服务器开始向客户端返回执行的结果。

(四)、重定向可以跨域访问,而转发是在web服务器内部进行的,不能跨域访问。

扩展资料

关于重定向:

我们在网站建设中,时常会遇到需要网页重定向的情况:

1.网站调整(如改变网页目录结构);

2.网页被移到一个新地址;

3.网页扩展名改变(如应用需要把.php改成.Html或.shtml)。

这种情况下,如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户得到一个404页面错误信息,访问流量白白丧失;再者某些注册了多个域名的网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点等。

参考链接  百度百科  重定向

本回答被网友采纳
第3个回答  2019-12-23
重定向是有方向性的,而请求转发,咋还有未知的方向?后者比前者更普遍和宽泛
第4个回答  2017-08-10
web项目都是在tomcat容器中完成的;
web组件:servlet(java代码)和jsp俩种;
重定向:只限定在servlet中,通过改请求的url-pattern值,响应给另一个请求response.sendRedirect(“url-pattern值”);是俩次请求了。
转发:servlet(java代码)和jsp之间的传递,肯定就是转发了。一次请求。
(为了好理解,可能说的绝对了)
相似回答