用户代理如何区分相对URL中的域和文件扩展名?

时间:2012-09-04 13:06:55

标签: html url user-agent

假设浏览器遇到如下链接:

<a href='stackoverflowhome.html'>home</a>

这显然是当前目录中html文件的相对URL,但浏览器如何知道.html是文件扩展名,而不是TLD(顶级域名)?它是否包含常见文件扩展名列表或TLD列表?如果是这样,只要新的文件格式变得普遍使用,或者接受的TLD列表发生变化,例如使用品牌tlds,它是否会手动更新?

3 个答案:

答案 0 :(得分:5)

这是因为RFC 3986指定了应该解析URI的方式。如果URI没有scheme(一组字符后跟冒号 - 例如http:gopher:),则必须将其视为相对URI。引用RFC:

  

URI-reference是URI或相对引用。如果      URI-reference的前缀与后面的方案的语法不匹配      通过冒号分隔符,URI引用是一个亲戚      参考

允许用户代理最好地猜测用户的意思(参见section 4.5),尤其是在上下文不明确的情况下(例如浏览器中的URL栏),但RFC建议不要URI将会存在很长一段时间,因为用户代理的最佳猜测会随着时间的推移而发生变化,从而导致URI无法解析为同一资源,具体取决于访问它们的时间或访问它们的用户代理

答案 1 :(得分:0)

相对URL绝不是域名。

如果URL具有协议,则URL仅被解析为包含域名。 (或者是协议相对的)。

答案 2 :(得分:0)

网址不以协议说明符开头 - 没有http://https://,因此被解释为相对网址。