菜鸟求助
菜鸟求助老鸟 请求转发和请求重定向的具体区别? --------------------编程问答-------------------- 重定向是两次请求 url会变请求转发是一次请求 url不会变
--------------------编程问答-------------------- 转发为服务器内部跳转,浏览器看不到服务器内部如何运行
如 http请求-A,再转发到 B 浏览器中显示A地址
重定向要返回浏览器重新请求,可跨不同服务器
如 http请求-A,在重定向到B执行过程为 http请求-A,http请求-B,最后浏览器中显示B地址
--------------------编程问答-------------------- 转发是服务器行为,重定向是客户端行为
转发过程:客户浏览器发送http请求---->>web服务器接受此请求-->>调用内部的一个方法在容器内部完成请求处理和转发动作---->>将目标资源发送给客户; 你会发现地址栏地址没有变化,用的比较多,但是要注意使用绝对路径,负责有可能丢失页面样式表结构!
重定向过程:客户浏览器发送http请求---->>web服务器接受后发送302状态码响应及对应新的location给客户浏览器-->>客户浏览器发现是302响应,则自动再发送一个新的http请求,请求url是新的location地址---->>服务器根据此请求寻找资源并发送给客户; 你会看到浏览器地址变化。
--------------------编程问答-------------------- 转发是服务器端跳转,浏览器地址不会改变, 跳转后面的代码不会执行
重定向是服务器端跳转,浏览器地址发生变化。 --------------------编程问答-------------------- 转发:地址栏的地址会变化
重定向: 地址栏还是原来的地址 --------------------编程问答-------------------- 请求转法和重定向的区别:
一、表面而言,重定向时地址栏里的地址会发生变化,而请求转发时地址栏不变;
二,本质而言,重定向是客户端向服务端一次新的请求,会有新的request、response产生;
请求转发是服务端的请求转化,其中request、response不变。 --------------------编程问答-------------------- 通俗一点讲,
转发:就是你一个请求过来,我再请求别人做。
重定向:就是你一个请求过来,我说这件事我做不了,连帮你找人做的事我都不干了,直接给你打回去,你再请求别人做。
重点:重定向时你请求服务器两次。 --------------------编程问答-------------------- 1) 请求重定向地址栏有变化 请求转发地址栏无变化
2) 请求重定向客户端向服务器发送两次请求 请求转发发送一次请求
3) 应用场景:
一件事情做完了,应该做第二件事情了,就请求重定向 (用户登陆、购物)
Servlet处理完了,让jsp做显示,用请求转发(mvc设计模式) --------------------编程问答-------------------- --------------------编程问答-------------------- redirect 是客户端自己去访问,地址栏改变
forward 是服务器去访问,然后把响应内容发给客户端,客户端地址栏不变
补充:Java , Web 开发