[前端 · 面试 ]HTTP 总结(十二)—— URL 和 URI

JavaScript/前端
384
0
0
2022-06-06
标签   前端面试
最近我在做前端面试题总结系列,感兴趣的朋友可以添加关注,欢迎指正、交流。
争取每个知识点能够多总结一些,至少要做到在面试时,针对每个知识点都可以侃起来,不至于哑火。

URL 和 URI

引言

不知道有多少人是和我一样分不清 URL 和 URI 的?

说来惭愧,之前自己一直以为 URL 和 URI 是一样的,所以在称呼它们的时候经常混着用,当偶然得知它们是两种不同概念的时候,我的状态是这样的:

用一个词形容就是:汗颜!如果一直无知下去,或许还好,可一旦知道真相,就会想着自己以前是不是因为这个闹了笑话而不自知……往事不堪回首!为了避免以后可能的出糗,这两个概念是一定要弄明白的!

URL

概念

全称为 Uniform Resource Locator,翻译为“统一资源定位符”,用于标示网络资源的位置。

URL 是 Internet 上资源的地址,可以定义为引用地址的字符串,用于指示资源的位置以及用于访问它的协议。

URL 是在网络上定位资源的最普遍使用的方式,它提供了一种通过描述其网络位置主要访问机制来检索物理位置的表示的方法。

URL 中描述了协议,用于检索资源和资源名称。如果资源是 Web 类型资源,则 URL 在开头包含 http / https。同样,如果资源是文件,则以 ftp 开头,如果资源是电子邮件地址,则以 mailto 开头。

组成

URL 包含以下信息:

  • 用于访问资源的协议
  • 服务器的位置(无论是通过IP地址还是域名)
  • 服务器上的端口号(可选)
  • 资源在服务器目录结构中的位置
  • 片段标识符(可选)

比如:

https://juejin.cn/user/2893570333750744/posts

作用

URL 主要用于链接网页,网页组件或网页上的程序,借助访问方法(http,ftp,mailto 等协议)来检索位置资源。

URI

概念

全称为 Uniform Resource Identifier,翻译为“统一资源标识符”,用于标示一个抽象或者物理资源。

URI 是标识逻辑或物理资源的字符序列,与 URL 类似,也是一串字符。通过使用位置名称或两者来标识 Internet 上的资源,它允许统一识别资源。

有两种类型的URI,统一资源标识符(URL)和统一资源名称(URN)。

组成

任何URI的通用形式都是:

scheme:[// [user:password @] host [:port]] [/] path [?查询] [#片段]

其中:

  • Scheme(方案):该方案列出了具体语法和URI的任何相关协议。方案不区分大小写,后跟冒号。理想情况下,URI方案应该在互联网号码分配机构(IANA)注册,但也可以使用非注册方案。
  • 权限组件:权限组件由多个部分组成:可选的身份验证部分,主机(由注册名称或IP地址组成) , 以及可选的端口号。身份验证部分包含用户名和密码,用冒号分隔,后跟at(@)符号。在@之后是主机名,然后是冒号,然后是一个端口号。请务必注意,IPv4地址必须采用点十进制表示法,并且IPv6地址必须括在括号中。
  • 查询(可选):查询包含一串非分层数据。虽然语法没有明确定义,但通常是由分隔符分隔的属性值对序列,例如&符号或分号。查询通过问号与前一部分分开。
  • 片段(可选):片段包含片段标识符,该标识符为辅助资源提供方向。

作用

URI 用于定义项目的标识,此处单词标识符表示无论使用的方法是什么(URL 或 URN),都要将一个资源与其他资源区分开来。

总结

通过上面 URL 和 URI 内容的学习,总结如下:

  • URL 指定要使用的协议类型,而 URI 不涉及协议规范。
  • 可以说 URL 是 URI(因为 URL 是 URI 的子集),但 URI 永远不能是 URL。

~

~本文完,感谢阅读!

~

学习有趣的知识,结识有趣的朋友,塑造有趣的灵魂!
大家好,我是〖编程三昧〗的作者 隐逸王,我的公众号是『编程三昧』,欢迎关注,希望大家多多指教!
你来,怀揣期望,我有墨香相迎! 你归,无论得失,唯以余韵相赠!
知识与技能并重,内力和外功兼修,理论和实践两手都要抓、两手都要硬!