• 当在浏览器输入一个网址后,实际会发生什么?


    这个问题的回答主要是翻译自这篇英文文章 http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ 。

    那么,输入网址后,实际发生了什么呢?过程如下:

    1、输入网址。

    2、浏览器查找域名的IP地址。

     导航的第一步是通过访问的域名找出其IP地址。DNS查找过程如下:
    
    • 浏览器缓存 – 浏览器会缓存DNS记录一段时间。 有趣的是,操作系统没有告诉浏览器储存DNS记录的时间,这样不同浏览器会储存个自固定的一个时间(2分钟到30分钟不等)。
    • 系统缓存 – 如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用(windows里是gethostbyname)。这样便可获得系统缓存中的记录。
    • 路由器缓存 – 接着,前面的查询请求发向路由器,它一般会有自己的DNS缓存。
    • ISP DNS 缓存 – 接下来要check的就是ISP缓存DNS的服务器。在这一般都能找到相应的缓存记录。

    3. 浏览器给web服务器发送一个HTTP请求

    4. 网站服务的永久重定向响应

    服务器给浏览器响应一个301永久重定向响应,为什么服务器一定要重定向而不是直接发会用户想看的网页内容呢?其中一个原因跟搜索引擎排名有关。如果一个页面有两个地址,就像http://www.igoro.com/ 
    http://igoro.com/,搜索引擎会认为它们是两个网站,结果造成每一个的搜索链接都减少从而降低排名。而搜索引擎知道301永久重定向是什么意思,这样就会把访问带www的和不带www的地址归到同一个网站排名下。还有一个是用不同的地址会造成缓存友好性变差。当一个页面有好几个名字时,它可能会在缓存里出现好几次。

    5. 浏览器跟踪重定向地址

       现在,浏览器知道了要访问的正确地址,所以它会发送另一个获取请求。请求头部一般包括:
       Accept
       Accept-language
       Accept-Encoding
       Connection
       User-Agent
       Cookie
       Host
    

    6. 服务器“处理”请求

    服务器接收到获取请求,然后处理并返回一个响应。
    

    7. 服务器发回一个HTML响应

    8. 浏览器开始显示HTML

    9. 浏览器发送请求,以获取嵌入在HTML中的对象

    在浏览器显示HTML时,它会注意到需要获取其他地址内容的标签。这时,浏览器会发送一个获取请求来重新获得这些文件。这些文件就包括CSS/JS/图片等资源,这些资源的地址都要经历一个和HTML读取类似的过程。所以浏览器会在DNS中查找这些域名,发送请求,重定向等等…

    10. 浏览器发送异步(AJAX)请求

  • 相关阅读:
    Python一直在找动态Cookie,恩!
    python和Ajax在一起了?真的???
    Flask网页session记住用户登录状态
    Rxjs Observable.pipe 传入多个 operators 的执行逻辑分析
    RxJs map operator 工作原理分析
    RxJs fromEvent 工作原理分析
    SAP Spartacus Reference App Structure
    SAP Spartacus RouterModule.forRoot() called twice 的错误消息
    SAP UI5 XML 视图里 label 和 text 控件文本对齐问题
    Angular 使用 Injector API 人工获取依赖注入的实例
  • 原文地址:https://www.cnblogs.com/zhaowy/p/8435776.html
Copyright © 2020-2023  润新知