URL&URI通俗易懂的解释(网络)

URL/URI通俗易懂的解释

URL

  • 本段来自维基百科全书

    统一资源定位符(英语:Uniform Resource Locator,缩写:URL;或称统一资源定位器定位地址URL地址,俗称网页地址或简称网址)是因特网上标准的资源的地址, 能定位到全球唯一的台电脑上的唯一的软件运行的某个文件

    统一资源定位符的标准格式如下:

    [协议类型]://[服务器地址]:[端口号]/[资源层级Unix文件路径][文件名]?请求数据#id

    ​ 如: HTTPS://www.baidu.com:80/index/tup.html?name="chen"&pwd="aini"#112233

常见url演示:

HTTPS://www.dell.com.cn
http://www.uc123.com/en-us/docs
HTTPS://www.dell.com.cn/search?q=url

一个url有不同的部分组成, 其中有一些是必须的参数, 有一些是可以选参数, 下面来介绍url参数, 重点和非重点会一一陈述

HTTPS://www.baidu.com:80/index/tup.html?name="chen"&pwd="aini"#112233

陈述上述例子

  • http是协议, 表名浏览器使用何种协议, 通常都是HTTP和HTTPS两种(主流), HTTPS是安全版, 注意, HTTPS是一个版本, 与http工作原理一样,就是多加了一套认证流程, 现在web中使用的主流是这两种,

    但浏览器会识别如何处理的,这里不多纠结, 记住是一种协议即可

  • 域名www.dell.com.cn 表名向那个服务端发送web请求, 或者直接使用ip地址也是一样的, www…是使用ip解析后的ip地址, 但是不太方便, 所以一般都是使用域名作为连接服务端的

  • 80 端口 , 因为在浏览器都是使用80端口, 在查询网址时一般省略掉, 浏览器会自动补全, 表示在服务器上的软件端口, 访问时根据端口进行访问, 如果端口冲突访问会被拒绝

  • /index/tup.html 服务器上的文件地址, 使用这样来表示服务器上的物理文件位置, 一直沿用至今也没的方法替换, 已经定局了

  • ?name="chen"&pwd="aini" k:v键值对, 是提供给网络服务器额外的参数, 这些&符号分隔键值对列表, 在资源返回之前, web服务器可以使用这些参数执行额外的操作, 每个服务器都有自己相关的参数规则, 唯一可靠的方式就是定制web传来的参数判断用户是否可以访问本服务器

  • #112233 资源锚点, 代表.html文档的书签即id字段, 通过id返回特定的文章或图片或页面 #后面的部分(也称为片段标识符)从来没有发送到请求的服务器。

  • 很形象的例子

    你可能想到一个URL类似普通信件的地址:协议代表你要使用的邮政服务,域名是城市或者城镇,端口则像邮政编码;路径代表着你的信件所有递送的大楼;参数则提供额外的信息,如大楼所在单元;最后,锚点表示信件的收件人。

使用rul

使用浏览器地址栏一个绝对的url, 如果存在也可以拿到相应的数据, 但这只是冰山一角

Django的模板语言中会大量使用到url, 或者链接地址中也使用到URL连接地址

如:HTML中

  • : 标签 的 href="https://www.dell.com.cn"
  • : 引入样式标签或其他 `src="cdn地址/ 或物理内存地址"`
  • <script> : 同上
  • : 图片标签同上src

url的绝对路径和相对路径

绝对路径是完全拼完

HTTPS://www.baidu.com:80/index/tup.html?name="chen"&pwd="aini"#112233

隐去协议(浏览器自动补全)

www.baidu.com:80/index/tup.html?name="chen"&pwd="aini"#112233

相对路径 只写文件路径, 一般这种只在前端渲染时使用

如:/static/css/bootstrap.min.css

URI

通用用法有 5 个组件组成

URI = scheme:[//authority]path[?query][#fragment]

其中authority 组件有 3 部分组成

authority = [userinfo@]host[:port]

详图例子: 样式来源网络

          userinfo     host        port
          ┌─┴────┐ ┌────┴────────┐ ┌┴┐ 
  https://john.doe@www.baiduxx.com:123/forum/questions/?tag=networking&order=newest#top
  └─┬─┘ └───────┬────────────────────┘└────────┬───────┘└──────────┬────────────┘└┬─┘  
  协议       authority                         路径               query         fragment

  ldap://[2001:db8::7]/c=GB?objectClass?one
  └─┬┘ └───────┬─────┘└─┬─┘ └──────┬──────┘
 scheme    authority  path       query

  mailto:John.Doe@example.com
  └──┬─┘ └─────────┬────────┘
  scheme         path

  news:comp.infosystems.www.servers.unix
  └─┬┘ └───────────────┬───────────────┘
 scheme              path

  tel:+1-816-555-1212
  └┬┘ └──────┬──────┘
scheme     path

  telnet://192.0.2.16:80/
  └──┬─┘ └──────┬──────┘│
  scheme    authority  path

  urn:oasis:names:specification:docbook:dtd:xml:4.1.2
  └┬┘ └──────────────────────┬──────────────────────┘
scheme                     path

rul协议

  • file

    file 应该算是一个比较常用的协议了,它的格式如下:

    file://host/path
    

    需要注意的一点是,在 Windows 系统中,需要在实际文件路径的 盘符 前添加一个斜杠才能作为 URI 中的路径:

    file:///C:/Users/chen/Desktop/example.txt  在win中区分左右斜杠
    

    上面这个省略了 hostURI 标识的文件为:

    C:/Users/chen/Desktop/example.txt
    

    由于这种在 Windows 上不太自然的路径表示形式,是容易让人感到迷惑的。

    有兴趣请参阅. 维基百科

  • mailto mailto 是用来表示邮箱地址的 URI 协议,常见的形式为:

    mailto:someone@example.com
    

    通过 query 部分指定一些初始值:

    mailto:someone@example.com?subject=xxx&cc=someone_else@example.com&body=xxx
    

    指定多个邮箱地址:

    mailto:someone@example.com,someoneelse@example.com
    

    mailto 的完整语法还是有点复杂的,有兴趣的可以了解一下。维基百科

  • date

    data 在前端应该也是比较常用的一个协议了,提供了一种在网页中包含数据的方法,格式如下:

    data:[<media type>][;base64],<data>
    

    各部分的含义:

    • media type - 可选,指定媒体类型,格式为 attribute=value, 用 ; 分隔
    • base64 - 可选,通过 ; 与前面的内容分隔,表示 URI 的数据内容是二进制数据,通过 base64 将二进制数据编码为 ASCII 文本
    • data - 包含的数据,使用 , 与前面的内容分隔

    一个最小的 data URI:

    data:,
    

    data 协议可以包含的数据类型很多,常用的是直接在网页连接中包含图片:

    <img src="图片地址" alt="无法显示图片提示">

    更多的类型可以通过查阅相关资料进行了解。维基百科

文章参考:

https://developer.mozilla.org/zh-CN/docs/Learn/Common_questions/What_is_a_URL
https://rgb-24bit.github.io/blog/2018/uri.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值