为什么在HTML中使用href =“ //”而不是href =“ http://”?

8

为什么使用<link href="//something.com/style.css" rel="stylesheet">而不是在域名前加上http://https://

如果我们使用href=//,链接会发生变化吗?例如,在SSL模式下,它会自动更改为https://吗?


https://dev59.com/FG445IYBdhLWcg3wOnrW - jcho360
2个回答

9

是的,它将使用当前协议。

即,如果当前页面为 https,则它将使用 https 访问 href

如果是 http,那么链接将通过纯粹的 http 访问。

这将防止浏览器警告,如果托管页面是 https,并且比普通的 http 链接更安全。


1
如果目标主机也配置正确以通过SSL正确提供资源,这将防止浏览器警告。如果没有配置正确,则行为范围从超时到SSL证书警告到404错误不等。 - Palpatim
只有当资源的域支持与访问托管页面相同的协议时,此方法才能正常工作。 - SilverlightFox
感谢您的详细说明。 - DasCodes

5
这正是你所猜测的:使用href ="// ..."而不指定URI方案,允许它动态匹配用于访问资源的任何协议,例如http或https。
这实际上只是相对路径的一个示例,但是相对于协议。
来源:IETF的 URI语法文档,第3.1节(方案)和第4.2节(相对参考)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接