URL的组成结构与含义简述

我们每天可能要打开几十个页面,但你是否观察过它们的 URL 地址?接下来带大家“庖丁解牛”,把 URL 拆开看看。

一个标准的 URL 地址由 protocol、hostname、port、path、parameters、query 几部分组成。

接下来以下面这个链接为例进行详细介绍:

http://news.qq.com/a/20160209/012154,htm?a=1&b=2&c=3

1) protocol

指 http:// 部分,是协议的意思。协议就是一套规则,定义了数据的封装、打包、拆包和解释的规则,http:// 即表示只能通过 HTTP 这套规则访问这个页面资源。

大家是否还见过 https、ftp、thunder 这些协议头? URL 地址标识了一个资源,协议头表示我们可以通过不同的规则(协议)访问它。当然,前提是存放这些资源的服务器支持这个协议。

在剧院,座位可以看作资源,观众只有获取资源,才能看到剧目。过年时观众比较多,为了防止发生踩踏事件,剧院不但开放正门,还开放两个侧门。可以想象,观众的票面上,一定标识了座位的信息(几排几号),这相当于 URL 的后半部分。

有的票面标了从正门进,有的标了从侧门进,这就相当于 URL 的协议头标识了协议,一种是按走正门的规则进入,另一种是按走侧门的规则进入,观众拿着走正门的票从侧门进入,会被拒绝而无法获取资源(座位),所以采用何种协议至关重要。

前面讨论的前提都是要侧门开放,即服务器支持这种协议。如果不开放侧门,地址就是无效的,访问不到这个资源。

总之,协议头标识了访问具体资源的规则,以后大家看到不同的协议头,就想想 这个例子。当然,也可以设计一个协议,例如 abc://,这叫作自定义协议。

2) hostname

hostname 称为主机名,在本例的 URL 中,news.qq.com 就是 Hostname。

可以将主机理解为一台名叫 news.qq.com 的机器,这台主机在 qq.com 域名下。qq.com 叫作 一级域名,很多人认为 www.qq.com 是一级域名,其实它只不过是一个二级域名,www 等同于刚才介绍的 news。

www.qq.com、news.qq.com、qzone.qq.com、v.qq.com 等都是二级域名。

3) port

port 称为端口号,一般 HTTP 的端口号为 80,HTTPS 的为 443,可以理解为计算机有很多个提供服务的点,比如可以用默认的 80 端口来提供服务,也可以用 81 端口来提供服务。

把一个主机比喻成一间房子的话,这间房子可以有 65536 个门,门号就是端口号,这么多端口都可以达到进出的目的。上面的 URL 中没有任何的端口 号,即默认为 80。

以 http://news.qq.com:8080/a/20160209/012154.htm?a=1&b=2&c=3#p=1 为例,这 个 URL 指定了从 8080 这个端口号(即从这个门)访问资源,这个网页服务器必须先 在这个端口部署服务,才能供用户访问(先把门打开,才能提供服务)。

4) path

接下来是 /a/20160209/012154.htm/。hostname 后面的一长串全部称为 path,是“路 径”的意思,即最终文件所在的路径和文件名,只不过此地址的文件存储在腾讯的服 务器上,即 news.qq.com 这个域名下的若干台机器上。

5) parameters

?a=1&b=2&c=3 这一部分称为参数(parameters ),也叫查询。

它的目的是在 URL 中带上一些本地的信息传给服务器,a、b、c 三个字符是为了方便大家理解杜撰的 (在 baidu 的 URL 中的参数是这样的:?ie=utf8&f=8&rsv_bp=1&tn=baidu ),这些 KeyValue 的键值对标识了一些特定的意义,最终要由服务器进行判断处理。

其中参数部分加上一些随便填写的值并不会出错,比如 &d=4,只不过服务器不解析这部分 罢了。

再长的 URL 也是由这几个关键部分组成的,只要大家能分割出上面介绍的几个主要部件,就能看岀各部分的意义。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


问题背景 最近小伙伴提了一个希望提高后台下拉列表可操作性的需求,原因是下拉列表选项过多,每次下拉选择比较费时费力且容易出错,硬着头皮啃了啃前端知识,网上搜寻了一些下拉列表实现的资料,这里总结一下。 P
// n位随机数生成 function randomNum(n) { let sString = ""; let strings = "abcdefghijklmnopq
HTML是HyperText Markup Language的简称,中文名称:超文本标记语言,它是一种用于创建网页的 标准标记语言
层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。
JavaScript 是脚本语言,是一种解释性脚本语言(代码不进行预编译)
本文由葡萄城技术团队原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 一名开发者或设计师通常可以在一秒内指出优秀的设计,但对于糟糕的设计只需最多半
本文由葡萄城技术团队原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 Excel是我们办公中常用的工具 ,它几乎能为我们处理大部分数据,友好的交互
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 原文出处:https://blog.bitsrc.io/8-tips-for-an-awesome-sign
本文由葡萄城技术团队于博客园翻译并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 如果我们自己编写从URL中分析和提取元素的代码,那么有可能会比较痛苦
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 原文出处:https://blog.bitsrc.io/what-is-deno-and-will-it-r
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 原文出处:https://blog.bitsrc.io/4-reasons-to-use-sass-in-y
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 原文出处:https://blog.bitsrc.io/vuejs-3-0-0-beta-features-
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 原文出处:https://blog.bitsrc.io/sessionstorage-and-localst
一直以来,JavaScript使用数组和对象来定义和存放结构化数据, 在这篇文章中,我们将一起深挖另一种对象Map的一切,我们将会去了解它是什么、如何遍历、都包括什么属性和方法以及优缺点是什么。
由于CSS的出现,现在的网站风格已经与它们很早之前的样子有了很大的不同。CSS的出现为原本平平无奇的网页注入了活力。这也是网站的用户体验得到进一步进化的原因。这可能就是当今几乎所有的网站或多或少都在使
自苹果推出了iPhone应用商店以来,App成为了我们生活中不可或缺的一部分,而对于实体业务也是如此,现在各行业都在推出自己的App,但有没有人想过这样一种场景,如果自己的潜在客户还没有安装你的App
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 原文出处:https://blog.bitsrc.io/10-top-chrome-extensions-f
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 原文出处:https://blog.bitsrc.io/do-your-buttons-lead-or-mi
本文由葡萄城技术团队原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前段时间在开发【葡萄城社区】公众号时有一个功能是需要用网页授权认证地址生成二
本文由葡萄城技术团队原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 HTML5的发展改变了互联网技术趋势,前端热度依旧不减,所以对于应用开发人员