提到域名重定向和域名转发,有时我们会傻傻分不清楚,首先我们可以明白一点,不管是域名重定向还是域名转发,都可以将一个域名指向另外一个站点,但两者之间又有本质的区别:重定向是客户端行为,转发是服务器行为。

1、请求次数:

重定向:重定向行为是做了两次请求,及产生了两个request对象,重定向会导致request对象信息丢失。

请求转发:转发做了一次请求, 浏览器的地址栏一直是第一次请求的地址。转发是服务器内部request/response控制权的移交。

2、请求资源地址:

重定向:web组件可以将请求重定向到任意一个url,而不仅仅是同一个应用。重定向的源组件与目标组件不共用同一个HttpServletRequest对象,因此不能在request范围内共享数据。

请求转发:转发的源组件与目标组件必须在同一个应用中,两者可以在request范围内共享数据。

3、工作流程:

重定向:浏览器发出http请求  >> 服务器接受请求并发送302状态码和新的对应的url到浏览器,浏览器接收响应并自动请求新的url  >> 服务器接收请求并寻找客户所需的资源响应到浏览器。

转发:浏览器发出http求其,服务器接收请求,服务器调用内部的一个方法在容器内完成请求处理和转发动作,然后将客户所需资源发送到浏览器。

举一个例子可能会更明白:

域名重定向:我们找一个网站建设公司A买美国虚拟主机,A明确的他们不卖主机,让我们找主机提供商B,结果B给我们提供了主机,所以我们会对外宣称是B给我们提供的主机。(我们相当于发送了两次请求,因此URL地址栏中就由A变成了B)

域名转发:同样去找A公司买美国虚拟主机,A公司虽然不卖美国主机,但是他们接下了我们的订单,然后自己从B公司购买了主机,最终我们会把钱给A公司,也就是会对外宣称是A公司给的我们虚拟主机。(相当于我们只对A发送了一次请求,URL地址栏里依然是A公司)




评论被关闭

在线客服