Url 初步介绍

基础背景:

URI:

uri(Uniform Resource Identifier) 是统一资源标识符,就像互联网上的地址一样,在世界范围内唯一标识并定位资源

URL:

url是uri最常见的形式,URL描述了一台特定服务器上某资源的特定位置。

大部分url都遵循一种标准格式:

1、第一部分被称为方案,说明了访问资源所使用的协议类型,例如我们常常看到的 http://、https://

2、第二部分给出了服务器的网络地址,例如 jiayu.lu,或者是127.0.0.1

3、其余部分指定了web服务器上的某个资源

目前,绝大部分uri都是url的形式

其实,url不仅可用在http协议,也可以通过ftp、smtp 等访问,它只是起一个标识资源位置的作用

URL的语法:

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

但其实我们最常见的是:

<scheme>://<host>:<port>/<path>?<query>

各字段的含义:

scheme(方案) - 访问服务器以获取资源时所使用的协议
(例如:http/https/ftp/smtp/rstp 等)

user(用户) - 某些方案访问时需要带上用户名

password(密码) - 某些方案访问时需要带上密码

host(主机) - 服务器的主机名或IP地址
(例如:jiayu.lu/127.0.0.1 等)

port(端口) - 服务器正监听的端口号,若为空则使用默认端口,
(http的默认端口为80,https的默认端口为443)

path(路径) - 服务器上资源的本地名称,例如 index.html

params(参数) - 某些方案可能会使用这个字段来指定输入参数,
参数为 名/值 对,url可包含多个参数,它们相互之间用 ; 分隔

query(查询) - 某些方案会用这个字段传递参数,我们在http中常用它传递GET参数

frag(片段) - 一小片资源的名字,但这个字段是在客户端(如浏览器)内部使用的,
在访问时,客户端不会将该字段传给服务器,服务器也不处理该字段。

例如:http://jiayu.lu/tags/Mysql?q=123 ,这里的对应关系如下:

<scheme> - http:
<host> - jiayu.lu
<port> - 80
<path> - tags/Mysql
<query> - q=123


绝对url 和相对url:

绝对url:

所谓绝对url,就是指例如 http://jiayu.lu/mysql?q=123 这类url,客户端可以拿该url直接定位到资源所在

相对url:

所谓相对url,就是指例如 ./html?q=456 ,客户端不能直接拿该url去访问资源,而是需要将其转化为绝对url进行访问。

所谓转化,其实就是相对于其基础url进行解析

所谓基础url,其实就是这个相对url所在文档的路径,

而我们在构建页面时,也可能有以下几种写法:

A:

<a href = "http://jiayu.lu/mysql/html.html">mysql</a>

B:

<a href = "/mysql/html.html">mysql</a>

C:

<a href = "html.html">mysql</a>

例如,我们在http://jiayu.lu/test.html 这个导航页面里包含了以上三个超链接,那么结果会如何呢?

A - 跳转到 http://jiayu.lu/mysql/html.html
B - 跳转到 http://jiayu.lu/mysql/html.html
C - 跳转到 http://jiayu.lu/html.html

如果我们的导航页面在http://www.so.com/test.html 呢?

A - 跳转到 http://jiayu.lu/mysql/html.html
B - 跳转到 http://www.so.com/mysql/html.html
C - 跳转到 http://www.so.com/html.html