组成
Scheme://login:password@address:port/path/to/resource?query_string#fragment
组成解析
scheme:传输协议
Scheme是用来指定使用的传输协议,其中最常见的就是HTTP协议,它也是互联网中应用
最广的协议。
其他常用的协议还有:
➢file: 用于访问资源位于本地计算机上的文件。
➢ftp:用于访问FTP服务器上的资源。
➢https: 通过SSL协议的HTTP访问web服务器资源。
➢mailto:访问资源属于电子 邮件地址,通过SMTP协议访问。但不经常使用用
➢ed2k、 flashget(快车)、 thunde(迅雷)等 ,通过支持专用下载协议的P2P软件访问资源。
login:password:身份验证
访问资源的身份验证。
在URL中,身份验证属于可选项,在向服务器申请资源时,在某些情况下,需要指定一个用户名和密码。如果没有身份验证字段,浏览器默认以匿名的方式访问资源。
address:服务器地址
完整的层级URL ,必须有一个域名、IPv4或者IPv6地址作为请求服务器的位置。域名不区分大小写, IPv6需要括在方括号中。
post:端口
服务器的端口是设置成固定的。而客户端随机启动一个端口去访问服务的特定端口。
port/path/to/resource:文件的路径
相对于网站的相对路径。例如一个文件在www目录下,…www/test/index.html
而index.htm文件就可以表示为
127.0.0.1:80/test/index.html
?query_ string:参数
这里指的是get方式传参,post方式传参是隐式传递参数,不显示在url上。
查询字符串是一个非必须的字段, 只要负责将一系列非层级格式的任意参数传递给服务器。
可同时传递多个参数,参数之间用("&"符号连接,每个参数名与值用(“="隔开。
#fragment:网页中的锚点
片段ID同样是应用的位置有别于查询字符串,他应用于客户端,片段ID值并不会回传至服
务端。在实际场景下,片段ID-般用于指向页面中的某个锚点,将片段ID与与预先设置的
锚点名称匹配,并滚到相应的位置。
不会向服务器传递。
URL的请求过程
浏览器会按照下面的流程进行解析。
例如下面的链接,
http://v.secevery.com&action=test@www.baidu.com
最终会访问到百度的页面。对于不懂@用法的普通民众,在@后面加个而已恶意链接,那就是个钓鱼网站了。