重定向与转发的区别

1、重定向是客户端行为,发送多次请求,网页地址改变:

          redirect客户端浏览器发送http请求——web服务器接受请求——》发送301/302状态码对客户端浏览器进行响应并返新的地址给客户端浏览器——》客户浏览器发现是301/302响应,则自动再发送一个新的http请求(请求url是服务器返回客户端浏览器的新地址)——》服务器根据此请求寻找资源作出处理并返回给客户。

    在这里服务器端返给客户端浏览器的地址可以是任意URL,既然是浏览器重新发出的请求,就没有什么request传递的概念了。在客户浏览器地址栏显示的是其重定向后的新地址,客户可以观察到地址的变化。重定向行为是浏览器做了至少两次请求,上一次request请求传输的数据会丢失。

2、转发是服务端行为,只发送一次请求,网页地址不变:

          dispatcher客户端浏览器发送http请求——web服务器接受请求——》调用内部的方法在容器内部完成请求处理和转发动作——》将目标资源发送给客户。

    在这里转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。在客户浏览器路径栏显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。转发行为是浏览器只做了一次访问请求。

本站公众号
   欢迎关注本站公众号,获取更多程序园信息
开发小院