重定向问题浅析

 当我们在浏览器的地址栏输入网址的时候,背后发生了很多的故事,比如客户端和服务端在在DNS这一层要进行IP和域名的映射;在IP层双方都需要进行路由的寻址;在链路层,双方都需要进行MAC地址和IP地址的映射。我们今天所要讨论的是在应用层这一层所发生的重定向问题。


  这幅图得到两个结果:

  1、发生了重定向,即http://www.baidu.com ->https://www.baidu.com

  2、其实我输入的是baidu.com ,为什么Host头域是www.baidu.com

  第一个问题好理解,作为行业巨头,积极推动http2.0,以身作则,这个是我意淫的原因。其实主要目的也是减少用户搜索被窃听的风险,这不是我们这次讨论的主题,记住发生了重定向。第二个问题请看下一使用chrome浏览器的结果:


  显然chrome并没有越界,私自帮我加上www,难道IE就这么不讨人喜欢吗。其实也不是,其实这是我第一次使用chrome访问baidu.com,而IE则不是。经过我的实验发现浏览器会缓存重定向的结果。比如如果访问过了百度,再次输入的时候,浏览器会帮你补全www。至于为什么加上http而不是https,可能是https远没有http应用的广泛,主要浏览器厂商还没有设置默认加https吧,扯的有点远,回到重定向。

  对比下面两幅图

  访问www.zte.com.cn

 

  访问www.zte.com/cn


  得出如下结果:

  1、网址www.zte.com.cn被重定向到www.zte.com.cn/cn/

  2、网址www.zte.com.cn/cn还是被被重定向到www.zte.com.cn/cn/

  这说明"/"很重要,为甚在访问百度的时候"/"会被自动加上,而到了这里就不行了呢?在RFC2616中是这样规定的:If the abs_path is notpresent in the URL, it MUST be given as "/" when used as aRequest-URI for a resource.说的是在只有域名那一坨的时候,必须加"/",这时候浏览器会自动加上"/",但是对于www.zte.com.cn/cn,我并不清楚cn是可执行文件还是文件夹,所以浏览器就不能越俎代庖了,没有加上"/",因此会发生重定向。

  再看下面几幅图:

  访问sina.com


  

  得出如下结果:

  1、访问sina.com/首先被重定向到www.sina.com/,然后被重定向到www.sina.com.cn/

  2、几次重定向分成了几条流来实现,主要是客户端端口在变化。

  为什么要进行这样的重定向,其实,我们人为的看这几个网址,觉得没什么差别,但是对于网络爬虫来说,比如百度的,如果不重定向的话,他会人为1中提的网址是三个网址,这样的话就会分散新浪的网址权值,造成排名下降,为了权值,我必须重定向啊。当然这也仅是原因之一。至于问题2并不是这次的讨论范畴,下次继续讨论。当然上面图中各个网址缓存时间都是不一样的,主要与个网站的作用有关。

  以上便是在开发协议过程中无意发现的一些现象,请大家多多吐槽。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值