菜鸟求助老鸟  请求转发和请求重定向的具体区别?

解决方案 »

  1.   

    重定向是两次请求 url会变
    请求转发是一次请求 url不会变
      

  2.   

    转发为服务器内部跳转,浏览器看不到服务器内部如何运行
    如 http请求-A,再转发到 B 浏览器中显示A地址重定向要返回浏览器重新请求,可跨不同服务器
    如 http请求-A,在重定向到B执行过程为  http请求-A,http请求-B,最后浏览器中显示B地址
      

  3.   

    转发是服务器行为,重定向是客户端行为
    转发过程:客户浏览器发送http请求---->>web服务器接受此请求-->>调用内部的一个方法在容器内部完成请求处理和转发动作---->>将目标资源发送给客户;  你会发现地址栏地址没有变化,用的比较多,但是要注意使用绝对路径,负责有可能丢失页面样式表结构!重定向过程:客户浏览器发送http请求---->>web服务器接受后发送302状态码响应及对应新的location给客户浏览器-->>客户浏览器发现是302响应,则自动再发送一个新的http请求,请求url是新的location地址---->>服务器根据此请求寻找资源并发送给客户;  你会看到浏览器地址变化。
      

  4.   

    请求转法和重定向的区别:
    一、表面而言,重定向时地址栏里的地址会发生变化,而请求转发时地址栏不变;
    二,本质而言,重定向是客户端向服务端一次新的请求,会有新的request、response产生;
                  请求转发是服务端的请求转化,其中request、response不变。
      

  5.   

    1) 请求重定向地址栏有变化 请求转发地址栏无变化
    2) 请求重定向客户端向服务器发送两次请求 请求转发发送一次请求
    3) 应用场景:
    一件事情做完了,应该做第二件事情了,就请求重定向 (用户登陆、购物)
    Servlet处理完了,让jsp做显示,用请求转发(mvc设计模式)
      

  6.   

    redirect 是客户端自己去访问,地址栏改变
    forward  是服务器去访问,然后把响应内容发给客户端,客户端地址栏不变