使用方案时,浏览器如何确定 href 中的 URL 是否是相对的?

2024-03-10

假设我有以下链接标签:<a href="tel:+15555555">Phone number</a>.

浏览器到底如何知道不加载相对位置./tel:+15555555从当前服务器知道tel应该被解释为一个计划?

检测主机相对 URL (/…) 或协议相关的 URL (//…)似乎是微不足道的。我猜 HTTP-URLs (http://… or https://…)对于特殊情况也很简单。但是浏览器如何解析具有任意方案的 URL?我知道有效的方案必须以小写字母开头,并且只能包含小写字母或字符+, - and .,这在一定程度上限制了范围…… 当然,我知道整个问题仅与相对 URL 有效的范围有关(即大多数情况下href and src属性)。

我正在寻找一些 RFC 的链接(例如,它禁止非 URL 编码的冒号只能是方案分隔符)以及各种浏览器的 URL 解析内部的源代码。


href 值被解析为 URI(请参阅 RFC 3986)。解析的结果是,浏览器会知道这是一个绝对 URI,而不是相对引用。

事实上,路径部分中允许使用非转义的“:”;只是它们需要出现在第一个“/”之后;否则,如果前面的字符都是有效的方案名称字符,则它们可以被解析为方案分隔符。

See http://greenbytes.de/tech/webdav/rfc3986.html#path http://greenbytes.de/tech/webdav/rfc3986.html#path

RFC 中还有以下内容:第 4.2 节 https://www.rfc-editor.org/rfc/rfc3986#section-4.2(标题为“相对参考”):“路径段包含冒号字符(例如,“this:that”)不能用作相对路径引用的第一段,因为它会被误认为是方案名称。这样的段前面必须有一个点段(例如“./this:that”)以进行相对路径引用。” (强调已添加)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用方案时,浏览器如何确定 href 中的 URL 是否是相对的? 的相关文章

随机推荐