为什么要使用协议相对URL?

oin*_*ink 27 html https http cdn relative-url

这是StackOverflow上经常讨论的问题,这意味着什么:

 <script src="//cdn.example.com/somewhere/something.js"></script>
Run Code Online (Sandbox Code Playgroud)

这样做的好处是,如果您通过HTTPS访问它,您将自动获得HTTPS,而不是那个可怕的"此页面上的不安全元素"警告.

但为什么要使用协议相对的URL呢?为什么不直接在CDN URL中使用HTTPS?毕竟,如果您决定通过HTTPS加载某些部分,HTTP页面没有理由抱怨.

(这更适用于CDN;几乎所有CDN都具有HTTPS功能.而您自己的服务器可能不一定具有HTTPS.)

Joe*_*Joe 39

截至2014年12月,Paul Irish关于协议相关URL的博客说:

2014.12.17:既然所有人都鼓励使用SSL,并且没有性能问题,那么这种技术现在已成为一种反模式.如果您需要的资产在SSL上可用,则始终使用该https://资产.

除非您有特定的性能问题(例如Zakjan的答案中提到的慢速移动网络),否则您应该使用它https://来保护您的用户.

  • @ user3448600对于本地资源,您只需使用`/`路径,而不是`//`路径. (6认同)
  • 在2017年,SO也从协议相对于HTTPS切换:https://nickcraver.com/blog/2017/05/22/https-on-stack-overflow/#mistakes-protocol-relative-urls (3认同)

zak*_*jan 8

因为性能.建立HTTPS连接比HTTP花费更长的时间,TLS握手增加了最多2个RTT的延迟延迟.您可以在移动网络上注意到它.因此,如果您不需要,最好不要使用HTTPS资产URL.

  • 当HTTP2尚不可用时,这是2年的答案. (5认同)
  • 这个答案不再正确。在您的网站上启用HTTP2,HTTPS比HTTP快。 (3认同)
  • 您现在肯定应该知道,并不是 HTTPS 现在比 HTTP 更快,而是 HTTP 现在比旧的 HTTP 更快,而且只实现了 HTTPS 版本。HTTPS 仍然并且始终会比 HTTP 慢。 (3认同)