http协议之URL的组成 划分规则

http协议之URL的组成 划分规则

url分为以下几个部分,对url进行编码时要分别考虑这几个部分的特殊情况,一般参考ie的编码规则编码,url中/\?#@是五个url中可以无限yy的字符

scheme://[user:password@]hostname[:port]/path/[;parameters][?query][#fragment]

scheme协议名:
协议名不区分大小写,以:(冒号)结束,特殊情况//可以省略,RFC1738中定义scheme中只能包含字母、数字、+、- ,现实中浏览器没有严格的遵守,http://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml

授权信息:
@前的是密码:冒号前的是用户名,@的字符一般被认为是授权信息,除了IE、safari,其它浏览器也接受;(分号)作为授权信息中的分隔符

hostname(主机名):
服务器的域名或IP,域名可以被编码或者被同形字替换,除了ipv4还有方括号括起来的ipv6地址、十六进制、八进制表示的ip。

http://%65xample.%63om/ 百分号编码后的域名example.com
http://6ˢAn。cºM/  同形字替换后的域名
http://0x7f.1/ 这是用十六进制表示的127.0.0.1
http://017700000001/ 用八进制表示的127.0.0.1
首先把四段数字转成 16 进制:7F 00 00 01 然后把7F000001转换成8进制,添加前缀0标识八进制,可以是一个0也可以是多个0。

port(端口号):
多数使用协议的默认端口,如http默认端口为80。出于安全或其他考虑,使用非标准端口时,URL中就不能省略端口号这一项。

path(路径):表示服务器上一个文件或文件夹的路径,由零或多个“/”符号隔开的字符串。

parameters(参数):用于指定特殊参数的可选项,IE和 safari浏览器不同于其它浏览器。

query(查询):可选,用于参数传递,可有多个参数,用“&”符号隔开,每个参数的名和值用“=”对应。

fragment(信息片断):#号后的内容,常用做锚链接或js中使用,不会发送到服务器。可以用来绕过一些url限制,如#.png

 

6san.com

发表评论