【问题标题】:Why use protocol-relative URLs at all?为什么要使用协议相关的 URL?
【发布时间】:2015-04-11 08:23:29
【问题描述】:

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

 <script src="//cdn.example.com/somewhere/something.js"></script>

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

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

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

【问题讨论】:

    标签: html http https cdn relative-url


    【解决方案1】:

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

    【讨论】:

    • 我说还是用http2性能的https比较好,更安全!
    • 这是 2 年前的答案,当时 HTTP2 尚不可用。
    • 这个答案不再正确。在您的网站上启用 HTTP2,HTTPS 比 HTTP 更快。
    • 现在你肯定知道了,并不是 HTTPS 现在比 HTTP 快,而是 HTTP 现在比旧的 HTTP 快,而且只实现了它的 HTTPS 版本。 HTTPS 仍然并且总是比 HTTP 慢。
    • 请注意,当页面离线保存时, //: 链接会被破坏。 joonas.fi/2016/12/27/stop-using-protocol-relative-urls
    【解决方案2】:

    截至 2014 年 12 月,Paul Irish's blog on protocol-relative URLs 说:

    2014.12.17:现在 SSL 鼓励所有人使用,并且没有性能问题,这种技术现在是一种反模式。如果您需要的资产在 SSL 上可用,则始终使用 https:// 资产。

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

    【讨论】:

    【解决方案3】:

    需要注意的是,如果您使用 CSP 的 upgrade-insecure-requests,则可以安全地使用与协议无关的 URL (//example.com)。

    【讨论】:

      【解决方案4】:

      有许多潜在的原因,尽管它们都不是特别重要:

      • 下次每个有议程的企业都推出新协议时怎么样?那么我们是否将不得不再次交换数千个字符串?不用了。
      • HTTPS 比同版本的 HTTP 慢
      • 如果 HTTP/2 的 the notes listed at caniuse.com 中的任何一个有问题
      • 从概念上讲,如果服务器强制执行协议,则首先没有理由对其进行具体说明。不可知论就是这样。它涵盖了您的所有基地。

      【讨论】:

        【解决方案5】:

        相对于协议的 URL 有时会破坏试图检测 location.protocol 的 JS 代码。极旧的浏览器也无法理解它们。如果您正在开发需要最大向后兼容性的 Web 服务(即提供可以在慢速连接和/或旧设备上接收/发送的关键紧急信息),请不要使用 PRURL。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-08-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-15
          • 2012-08-07
          • 1970-01-01
          相关资源
          最近更新 更多