这是StackOverflow上经常讨论的问题,这意味着什么:
<script src="//cdn.example.com/somewhere/something.js"></script>
这样做的好处是,如果您通过HTTPS访问它,则会自动获得HTTPS,而不是那个可怕的“此页面上的不安全元素”警告。
但为什么要使用协议相对的URL呢?为什么不直接在CDN URL中使用HTTPS?毕竟,如果您决定通过HTTPS加载某些部分,HTTP页面没有理由抱怨。
(这更适用于CDN;几乎所有CDN都具有HTTPS功能。而您自己的服务器可能不一定具有HTTPS。)
答案 0 :(得分:35)
截至2014年12月,Paul Irish's blog on protocol-relative URLs说:
2014.12.17:既然所有人都鼓励使用SSL,并且没有性能问题,那么这种技术现在已成为一种反模式。如果您需要的资产在SSL上可用,则始终使用
https://
资产。
除非您有特定的性能问题(例如Zakjan的答案中提及的移动网络速度慢),否则您应使用https://
来保护您的用户。
答案 1 :(得分:7)
因为表现。建立HTTPS连接所需的时间比HTTP长得多,TLS握手会将延迟延迟增加到2 RTT s。您可以在移动网络上注意到它。因此,如果您不需要,最好不要使用HTTPS资产网址。
答案 2 :(得分:0)
值得注意的是,如果您使用的是CSP的upgrade-insecure-requests
,则可以安全地使用与协议无关的URL(//example.com
)。
答案 3 :(得分:0)
有很多潜在原因,尽管它们并不是特别重要:
答案 4 :(得分:0)
与协议相关的 URL 有时会破坏试图检测 location.protocol 的 JS 代码。非常旧的浏览器也无法理解它们。如果您正在开发需要最大向后兼容性的网络服务(即提供可以在慢速连接和/或旧设备上接收/发送的关键紧急信息),请不要使用 PRURL。