地址交代如何访问资源
URL的基本写法以方案名和冒号开始,后续结构随方案而异。对于常见HTTPS地址,主机、可选端口、路径、查询和片段分别承担不同角色,并不是把整个字符串当作服务器上的文件名。
RFC 3986在URI框架下解释URL的定位用途;WHATWG的浏览器标准则统一采用URL术语,重点规定现实软件如何解析和处理输入。理解文献时需要说明采用哪套术语。
解析结果不等于原始输入
浏览器把输入解析为URL记录,再按规则序列化输出。主机表示、默认端口和某些编码处理可能使输出形式与最初输入不完全相同;解析错误也可能有明确的恢复规则。
WHATWG把解析后再序列化的稳定性列为目标:成功结果不应因为反复执行同样过程而不断变化。应用比较或修改地址时,需要使用适合其语义的规则,而不是随意替换字符串片段。
相对引用还需要基准URL:相同的item放在https://example.test/a/b之下解析,可得到/a/item,不能只把文字机械接到原地址末尾。百分号编码也不能无条件先解开再解析;例如HTTPS路径中的a%2Fb不等同于两个路径段a/b。分隔符被当作结构还是数据,会改变解析结果,所以比较、拼接和解码的次序必须服从所采用的URL规则。
定位、内容与信任的区别
路径与查询怎样对应内容,由方案及服务实现共同决定。地址末尾像文件名,不保证后端真的保存同名文件;一次请求也可能重定向到另一个地址,或返回资源的某种表示。
URL能够被解析,不代表资源可用或内容可信。界面显示文字与真正链接目标也可能不同,因此地址定位、连接保护和信息可靠性仍是不同问题。