URL语法

URL地球人每天都会在浏览器里敲,它是网络资源的标准化名称,它告诉你资源来自何处,以及如何与服务器进行交互

通常URL分为三部分:

第一部分是URL的方案,可以告诉WEB客户端如何访问资源,比如使用HTTP协议,最开始输入http,除此之外还有FTP,SMTP来访问的等等

第二部分是WEB服务器的位置,也可以定位客户端所需要的资源的服务器,比如host

第三部分是资源的具体路径,也就是请求的服务器资源的具体位置

URL的语法:

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

包括所有内容的很难找到,一般来说有scheme,host,path比较常见

scheme		访问服务器以获取资源时要使用哪种协议
user		某些方案访问资源时需要的用户名
password		用户名后面可能要包含密码,用:分隔
host		资源宿主服务器的主机名或点分IP地址
port		资源宿主服务器正在监听的端口
path		服务器上资源的本地名
params		某些方案会用这个字段来指定输入参数
query		某些方案会用这个字段传递参数激活应用程序,用?与前面分隔
frag		一小片或者一部分资源的名字;引用对象时不会将该字段传给服务器,客户端内部使用

 

1:scheme方案

方案指定了如何访问指定资源,它会告诉负责解析URL的应用程序应该使用什么协议,比如HTTP URL中用的方案就是http;方案位于URL的最开始,结束用一个冒号:和后面的区分

2:user用户名和password密码

很多服务器都要求输入用户名和密码才能访问数据,FTP最典型的例子

3:host主机和port端口

客户端要想得到资源,必须知道服务器所在哪台机器上才有资源,以及机器的什么地方可以对资源进行访问,这就需要得到IP地址和端口

4:path路径

URL的路径字段说明了资源位于服务器的什么地方,就像linux系统里用/来分级各个目录

5:params参数

很多方案只有主机名和路径,端口,用户名密码是不够的,很多协议需要更多的协议参数才能访问资源,比如随便举个例子ftp://XXXX/type=text,这里就带了一个参数type值为text,假如不指定参数详细类型,可能就无法访问资源

6:query查询

很多时候可以通过查询来缩小访问服务器资源的访问,比如这个wordpress每篇日志就有不同的id,类似http://www.lihuia.com/?p=XX,代表的是不同的日志,或者说是不同的条款,用问号?与前面的资源分隔,p=XX也就是查询字段

7:frag片段

除了资源路径按级区分,还有资源更详细的信息,比如章节,甚至片段,都可以通过不同的frag来表示,举个简单例子http://XXXX/index.html#six,这个#后面的six可能就指定了资源index.html里的第六个片段,从而直接显示你感兴趣的部分资源

 

一般来说我们碰到的都是绝对URL,也就是完全按照上面的URL语法来码的,比如在www.lihuia.com/index.html的html文件当中包含了一个./lihui.html的超链接,看起来这个是不完整的,但实际上它是一个合法的相对URL,它是可以相对于所在文档index.html的URL进行解析,也就是说index.html和lihui.html实际上是并列关系,解析方法大概:

1:路径./lihui.html,基础URL为http://www.lihuia.com/index.html

2:./lihui.html的方案为空,继承基础URL方案为http

3:至少有一个字段非空,一直到最后,中途继承了主机

4:将来自相对URL:路径为./lihui.html的字段和我们继承来的字段:方案http;主机www.lihuia.com合并起来,得到新的绝对URL:http://www.lihuia.com/lihui.html

发表评论