Url 为什么在网页的绝对路径中可以省略协议?

Url 为什么在网页的绝对路径中可以省略协议?,url,Url,我最近偶然发现了一个网站,它在select元素上有一些有趣的样式。我去调查后发现了这个(为了保护无辜的人改名): 尽管省略了HTTP:,它仍然可以工作。取消协议的目的是什么?它将使用您已经使用的协议。适用于同时具有https和http版本的网站 所以如果你在https://www.domain.tld/file.js脚本将是https://www.domain.tld/file.js 如果您在http://www.domain.tld/脚本将是http://www.domain.tld/fi

我最近偶然发现了一个网站,它在select元素上有一些有趣的样式。我去调查后发现了这个(为了保护无辜的人改名):



尽管省略了
HTTP:
,它仍然可以工作。取消协议的目的是什么?

它将使用您已经使用的协议。适用于同时具有
https
http
版本的网站

所以如果你在
https://www.domain.tld/file.js
脚本将是
https://www.domain.tld/file.js


如果您在
http://www.domain.tld/
脚本将是
http://www.domain.tld/file.js

目的是可以相对于包含页面确定方案(即
http
https
)。如果您在多个页面中包含了一段公共代码,可以通过
http
https
提供服务,则此功能非常有用。其目的是“使用与当前URL相同的协议”--如果可以通过
http:
https:
两种方式访问该页面,则可能(?)非常有用(我很难想到它可能对其他协议有用,即使这个协议也不是一个明确的用例).

我认为这是协议相对路径的简写。因此,它应该使用与该会话使用的协议相同的协议。例如,如果您使用http抓取该页面,则此url是相对于http协议的。

有很多答案,但没有实际引用指定此行为的标准。我认为这是正确的ds很有用,但如果它只是一个实现怪癖,我就不想使用它。@Teddy它显然被称为“ClassX7.45”,在RFC 1808中指定。另请参阅@mwcz链接的secs.2.2和2.4.5。
<script type="text/javascript" src="//www.domain.tld/file.js"></script>