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中区分左右斜杠
上面这个省略了
host
的URI
标识的文件为: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