web开发过程中redirect和forward有什么区别

小编 420

web开发过程中redirect和forward有以下区别:1.定义的区别;2.地址栏显示的区别;3.原理上的区别;4.功能上的区别;5.数据共享的区别;6.工作流程的区别。定义的区别在于,redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,而forward是服务器请求资源。

1.定义的区别

redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址。所以地址栏显示的是新的URL。所以redirect等于客户端向服务器端发出两次request,同时也接受两次response。

forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器。浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址。

2.地址栏显示的区别

redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,所以地址栏显示的是新的URL。

forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器。浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址。

3.原理上的区别

redirect(间接转发方式),有时也叫重定向,它一般用于避免用户的非正常访问。例如:用户在没有登录的情况下访问后台资源,Servlet可以将该HTTP请求重定向到登录页面,让用户登录以后再访问。

forward(直接转发方式)用的更多一些,一般说的请求转发指的就是直接转发方式。Web应用程序大多会有一个控制器。由控制器来控制请求应该转发给那个信息资源。然后由这些信息资源处理请求,处理完以后还可能转发给另外的信息资源来返回给用户,这个过程就是经典的MVC模式。

4.功能上的区别

redirect能够重定向到当前应用程序的其他资源,还能重定向到同站点的其他应用程序的资源,甚至使用绝对url地址重定向到其他站点的资源;一般用于用户注销登陆时返回主页面和跳转到其它的网站等。

而forward只能在同一个Web应用程序内的资源之间转发请求,可理解为服务器内部的一种操作;一般用于用户登陆的时候,根据角色转发到相应的模块。

5.数据共享的区别

redirect不能共享数据;而forward由第2个信息资源响应该请求,两个信息资源共享同一个request对象里面的数据。

6.工作流程的区别

redirect工作过程:客户端发送http请求,web服务器接受后发送3**状态码响应及对应新的location给客客户端,客户端发现是3**响应,则自动再发送一个新的http请求,请求url是新的location地址,在这里location可以重定向到任意URL,服务器根据此请求寻找资源并发送给客户。

forword工作过程:客户浏览器发送http请求,web服务器把接受的请求,调用内部的方法在容器内部完成请求处理和转发动作,然后响应客户端,将目标资源发送给客户。

延伸阅读

web开发注意事项

注意事项一,SQL注入:mybatis禁止使用${};

注意事项二,身份认证安全:(1)验证码安全,短信验证码调用次数限制(横向、纵向);短信验证码失效策略;图片验证码失效策略;无图验证码。(2)后台分离,同一业务系统的后台,如果内部员工和代理商都要使用,则应从功能上拆分成两个独立的系统。

注意事项三,越权访问:(1)垂直越权,未登录用户访问登录后才能访问的功能;普通用户操作管理员才能操作的功能。(2)水平越权,用户A访问只有用户B才能访问的信息。

注意事项四,SSRF服务端请求伪造攻击,可以通俗的理解为外部用户借助一些proxy功能的接口,实现了HTTP代理功能;可以对传入ip做白名单限制。

注意事项六,URL任意跳转,web应用程序接收到用户提交的URl参数后,没有对参数做“可信任URL”的验证,就想用户浏览器换回跳转该URL的指令。其危害是:用来进行钓鱼攻击用户;安装恶意软件;诱使用户泄露密码等信息;可采用白名单限制url。

回复

我来回复
  • 暂无回复内容

注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部