从输入url到页面展现(一)从浏览器解析url开始

news2024/11/28 7:31:36

前端面试有一道很考验人的问题,那就是:请你说一下从用户从输入url到页面展现的过程是怎样的?在接下来的一段时间呢,狗哥会从这一问题出发,开始剖析这个过程,希望可以让更多的小伙伴掌握到这个过程,虽说不能吊打加手撕面试官吧(你把他打了,你还怎么入职,对面试官要好一些),但漏一小手还是没问题的。

目录

1. url是什么?

2. url有哪几种类型

3. 浏览器如何解析url

4. 省略index.html这个文件名的解析

5. 小结


1. url是什么?

面试官问的这道题,用户输入url,一般就是说的网站的网址,但其实这个url,这个所谓的网址,远远不止网站的网址。因为我们一般使用浏览器就是用来访问网站的,购物啦,看视频啦,读博客啦,都是以http开头的网址,而我们使用浏览器的目的也是通过网址来访问web服务器。

但其实浏览器不光能访问web服务器,对吧,我记得之前不用outlook这些客户端的时候,我都是通过浏览器打开公司的企业邮箱,后来发现这样不太好,比较low,所以他可以充当邮箱客户端,对吧;我们经常用浏览器上传图片文件,下载一些文件,它也可以用来在FTP服务器上做下载和上传文件的工作,对吧。

2. url有哪几种类型

例如访问web服务器时使用的网址:http://www.aa.com:80/hello/index.html

 

 例如使用FTP协议上传和下载文件时的网址:ftp:ftp.aa.com:21/myDownFiles/fil1.txt

 例如想要读取本地文件时:file://localhost/c:/filePath/2023041301.png

例如我们发送电子邮件可能会用到:mailto:dog@aa.com 

是不是发现有点乱,让浏览器有点莫不着头脑了快,但你会发现,前面的http ftp file mailto 不同,这些头关键字就是所谓的协议,也更像是我们写代码时候定义的不同的函数,比如我要访问web服务器,就调用http这个函数,然后这个函数规定我后面如何传参,比如我要访问邮箱服务器,我就应该调用mailto这个函数,使用这个协议,然后这个函数又规定我们应该传哪些参数。协议大概也就是这么几种:

 而如果更好理解的话呢,就像是这样:

switch (agree) {
	case ‘http’:
		// 执行http 访问web服务器
		break;
 case ‘ftp’:
		// 执行ftp 访问ftp服务器
		break;
	case ‘file’:
		// 访问 文件服务器
		break;
	case ‘mailto’:
		// 访问邮箱服务器
		break;
	……
}

 

3. 浏览器如何解析url

如果有面试官问你从输入url到网页展现,你第一步肯定是要说明浏览器解析url的这一过程。如果你有幸看到狗哥这篇博客,那么你可以回忆一下自己之前是怎么回答的,或者看看其他博客大家是如何说的。我们还以  http://www.aa.com:80/hello/index.html  为例,看看浏览器大概如何解析这个url网址。

刚才我们说,浏览器解析url会随着协议的不同而不同,所以我们就要看一下url包含哪几个元素,通过拆分出来的这几个元素,再看url所代表的含义。

而我们从输入url,再到url请求,中间经历无数的路由器,网线,最终到达服务端那台机器,那台机器的具体文件目录又是如何安置的呢?

 

4. 省略index.html这个文件名的解析

刚才我们说正常的url应该是 协议+服务器域名+端口+目录+文件名,比如上面提到的http://www.aa.com/hello/index.html,但是我们时常还可以看到不是这样的,或者是五花八门的,比如 :

http://www.aa.com/hello/ 

很明显,这个Url带了协议,带了域名,带了目录名,目录名后面有个斜杠,但是没有带文件名,也就是没有那个index.html.

这种解析的方式就是,以 / 结尾了,那么hello/后面的文件名被省略了,但是没有文件名,和我们上面的理解又有所不同,不满足http类型url的规范啊。所以,这种url的方式,默认找到hello目录文件夹,然后如果省略的话,就找它下面的inde文件或者default文件名,比如index.html啦,default.jsp啦这种的文件。

http://www.aa.com/

我们经常可以看见的网址其实就是直接一个域名,后面没有带 / 的,比如我们常见的www.aa.com 这种的url格式,但即便不带,其实也是和带了 / 同样的意思,当没有路径名的时候,就默认是根路径了。那么就继续访问跟路径下的index或者default这样的文件名。当然,依我们常规的理解,肯定是html jsp 这类的落地执行文件,而非js css这样的被引用脚本文件。

http://www.aa.com/hello

类似这种,不是域名结尾的,是以一个看着像路径名又像文件名的,后面也没有跟 / ,感觉是不是有点乱套,不过程序嘛,就是解决人们觉得乱套的东西的。如果是这种直接以某个非 / 结尾的,那么这个hello可能是个文件夹,也可能是个文件,所以,如果根目录下可以找到hello文件名,比如hello.html,那么我们其实访问的就是http://www.aa.com/hello.html,这个url的服务器文件,但如果没有找到hello的文件名,那么我们就认定hello是一个目录,一个路径,一个文件夹,就去这个hello目录下继续去寻找index文件名或者default文件名,这个url大概就会变成这个样子了:http://www.aa.com/hello/index.html

5. 小结

大家跟着把这个专栏读完把,也鼓励狗哥把这个专栏写完,这个专栏必定会是一个很长的旅程,你读完本专栏,一旦有面试官胆敢问你从浏览器输入url到页面展现的问题,这就是他噩梦的开始。其实我平时面试别人不太喜欢问一些有的没的,如果公司真缺人,你问了工作中需要的得了呗,顶多提升着问一下工作中遇到的问题,如何解决的。有些面试官是真的gou,工作中不用什么,他非问什么。就你们公司那破代码,刚去的人起都起不来,谁敢上去就碰,就优化呀。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/423338.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【加载plist文件展示单组数据 Objective-C语言】

一、接下来,我们要为大家演示如何通过加载plist文件,使用UITableView展示单组数据, 1.最后运行起来的效果,是一个什么效果呢,是这样一个效果: 2.这个里面,这就是一个单元格吧, 这就是一个单元格, 这个单元格里面,包括一个图片框、一个TextLabel、一个DetailLabel、…

JAVA开发(通过网关gateway过滤器进行返回结果加密)

在对C的网站或者APP后端接口中,参数的传输往往需要加密传输。这时我们 可以通过springcloud的网关过滤器进行统一的控制。 网关过滤器的执行顺序: 请求进入网关会碰到三类过滤器:当前路由过滤器、DefaultFilter、GlobalFilter。 请求路由后…

ChatGPT团队中,3个清华学霸,1个北大学霸,共9位华人

众所周知,美国硅谷其实有着众多的华人,哪怕是芯片领域,华为也有着一席之地,比如AMD 的 CEO 苏姿丰、Nvidia 的 CEO 黄仁勋 都是华人。 还有更多的美国著名的科技企业中,都有着华人的身影,这些华人&#xff…

Vue组件化编程【Vue】

2.Vue 组件化编程 2.1 模块与组件、模块化与组件化 2.1.1 模块 理解:向外提供特定功能的js程序,一般就是一个js文件为什么:js文件很多很复杂作用:复用js、简化js的编写、提高js运行效率。 2.1.2 组件 理解:用来实…

Linux搭建Web服务器(二)——Web Server 与 HTTP

目录 0x01 Web Server 静态网络服务器(static web server) 动态网络服务器(dynamic web server) 0x02 HTTP协议 HTTP概述 HTTP工作原理 HTTP请求报文格式 HTTP响应报文格式 0x01 Web Server 一个Web Server就是一个服务器…

我们要被淘汰了?从科技变革看"ChatGPT"与"无代码开发"

现在只要一上网,就能看见GPT都在说“好厉害”、“太牛了”、“新技术要诞生了”、“我们人类要被淘汰了”之类的话题。但是这伟大的技术变革到底给我们带来了什么呢?答案好像又比较模糊。现在ChatGPT的代写、问答,以及开始做的搜索、办公是目…

sql查询语句-01

1.单表查询 ◆限制显示结果 使用limit限制显示的行数,分页函数limit m,n,从m1行开始显示n条记录 例:查询选修课程成绩排在前5的学生的学号和成绩。 select sno,score from SCorder by score desc limit 5;limit 1,3 零是第一条 ◆汇总数据(聚集函数&…

coinex06 // 前端数据 -> ringbuffer -> cpu

目录 0. 逻辑树 1 exchange-service 发送消息 1.1 exchange-service 添加依赖 1.2. yml配置文件 1.3. Source 1.4. 配置类 1.5. 发送消息到撮合引擎 service -> impl -> EntrustOrderServiceImpl 1.6. recket-server:8080 2. match-server 接收数据 2.1 数据转…

【SQL 必知必会】- 第十七课 创建和操纵表

目录 17.1 创建表 17.1.1 表创建基础 替换现有的表 17.1.2 使用NULL值 主键和NULL 值 理解NULL 17.1.3 指定默认值 使用DEFAULT 而不是NULL 值 17.2 更新表 小心使用ALTER TABLE 17.3 删除表 使用关系规则防止意外删除 17.4 重命名表 17.5 小结 这一课讲授创建、更改和删除…

【MyBatis Plus】002 -- 通用CRUD(插入、更新、删除、查询)

目录 3、通用CRUD 3.1 插入操作 3.1.1 方法定义 3.1.2 测试用例 3.1.3 测试 3.1.4 TableField 3.2 更新操作 3.2.1 根据id更新 3.2.2 根据条件更新 3.3 删除操作 3.3.1 根据id删除(deleteById) 3.3.2 根据Map删除数据(deleteByMap&#xff09…

程序员必备技巧:Git 和 GitHub 中高效地将单个文件还原为特定提交

Git 和 GitHub 用于存储您的旧代码,允许您在出现问题时回滚并安全地恢复以前的准确代码。 与其他开发人员协作时,了解如何将单个文件恢复为特定提交也变得至关重要。这是因为,在处理某个功能时,您可能需要修改不相关的文件来测试…

Cursor编程初体验,搭载GPT-4大模型,你的AI助手,自然语言编程来了

背景 这两天体验了下最新生产力工具Cursor,基于最新的 GPT-4 大模型,目前免费,国内可访问,不限次数,跨平台,你确定不来体验一把?官方的 Slogan : Build Software. Fast. Write, edi…

【CSS】课程网站 Banner 制作 ② ( Banner 栏版心盒子测量 | Banner 版心盒子模型左侧导航栏代码示例 )

文章目录一、Banner 栏版心盒子测量1、测量版心元素尺寸2、课程表测量二、Banner 版心盒子模型左侧导航栏代码示例1、HTML 标签结构2、CSS 样式3、展示效果一、Banner 栏版心盒子测量 1、测量版心元素尺寸 拉四条辅助线 , 将版心包起来 , 可以测量 Banner 条版心的尺寸为 1200 …

Nginx网站服务详解(第二部分:Nginx服务的主配置文件 ——nginx.conf)

1. 全局配置的六个模块简介 全局块:全局配置,对全局生效;events块:配置影响 Nginx 服务器与用户的网络连接;http块:配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置&…

SLBR通过自校准的定位和背景细化来去除可见的水印

一、简要介绍 本文简要介绍了论文“Visible Watermark Removal via Self-calibrated Localization and Background Refinement ”的相关工作。在图像上叠加可见的水印,为解决版权问题提供了一种强大的武器。现代的水印去除方法可以同时进行水印定位和背景恢复&#…

C++ 实现 Matlab 的 lp2lp 函数

文章目录1. matlab 的 lp2lp 函数的作用2. matlab 的 lp2lp 函数的使用方法3. C 实现3.1 complex.h 文件3.2 lp2lp.h 文件4. 测试结果4.1 测试文件4.2 测试3阶的情况4.3 测试9阶的情况1. matlab 的 lp2lp 函数的作用 去归一化 H(s) 的分母 2. matlab 的 lp2lp 函数的使用方法…

人脸识别经典网络-MTCNN(含Python源码实现)

人脸检测-mtcnn 本文参加新星计划人工智能赛道:https://bbs.csdn.net/topics/613989052 文章目录人脸检测-mtcnn1. 人脸检测1.1 人脸检测概述1.2 人脸检测的难点1.3 人脸检测的应用场景2. mtcnn2.1 mtcnn概述2.2 mtcnn的网络结构2.3 图像金字塔2.4 P-Net2.5 R-Net2…

为什么说过早优化是万恶之源?

Donald Knuth(高德纳)是一位计算机科学界的著名学者和计算机程序设计的先驱之一。他被誉为计算机科学的“圣经”《计算机程序设计艺术》的作者,提出了著名的“大O符号”来描述算法的时间复杂度和空间复杂度,开发了TeX系统用于排版…

开启数字新时代,5G-Advanced加速带入现实!

在过去的这些年里,我们亲眼见证了5G的崛起。据GSMA&GSA统计,截至2022年12月,全球共部署了超过240张5G商用网络,5G用户超过10亿。在韩国、瑞士、芬兰等地,5G用户渗透率已超过30%。中国的5G网络建设更是独领风骚。截…

形式语言与自动机总结---上下文无关文法(CFG)

第5章上下文无关文法: 设计文法: 做题的时候发现了一个正则表达式到文法的算法 R规则 根据正则式推导右线性文法_右线性文法表达ab*_Pluto 的博客-CSDN博客 举例 设计文法的关键在于理解递归性,文法是一个迭代器 1.The set {| i ≠ j or j ≠ k}, that is, the set of st…