【问题标题】:Are there cases where Protocol-Relative URLs is preferred over HTTPS?是否存在协议相对 URL 优于 HTTPS 的情况?
【发布时间】:2023-03-23 21:07:01
【问题描述】:

相对于协议的 URL

Protocol-relative URLs 是以 // 开头的 URL,而不是 http://https://。用于加载资源的实际协议来自包含页面;因此,HTTPS 页面中的//example.com/smile.jpeg 将加载https://example.com/smile.jpeg

反模式声明

It has been widely claimed 应该完全放弃与协议相关的 URL 以支持 HTTPS;我最近的一个拉取请求被拒绝了(最终只接受了 HTTPS)。

问题

网络上的许多信誉良好的服务仍然使用协议相关的 URL。例如,Google Analytics 调用//www.google-analytics.com/analytics.js,Disqus 调用calls//EXAMPLE.disqus.com/embed.js

Web 服务仍然使用不安全的协议相关 URL 而非 HTTPS 是否有原因?

【问题讨论】:

    标签: google-analytics disqus anti-patterns protocol-relative


    【解决方案1】:

    因为服务可能根本不通过 HTTP 调用?看看IANA-registered URI schemes的列表。通过使用相对于协议的 URL,它允许通过任何允许相同语法的方案加载页面。

    与协议相关的 URL 还允许在服务器配置中控制方案,而不是页面生成代码或页面模板。如果使用协议相对 URL,则可以将 Web 服务器配置为将任何普通的 http: 请求强制重定向到 https: 等效项,并且页面模板或代码中的拼写错误不会意​​外使用 http:(或者如果他们这样做,很容易扫描代码和模板文件并找到所有出现的问题)。

    【讨论】:

    • 你认为前面提到的两个服务是这样的吗?
    • 可能对于 Disqus,尤其是对于 Google,规则被规定为代码隐藏应该只说明资源在哪里,确定协议是服务器的工作。有了这个,进行策略更改(例如强制所有内容使用 HTTPS)只是服务器配置更改,没有它会涉及扫描整个代码库并触及代码中生成绝对 URL 的每个位置。对于 Google 来说,这可能是……很多代码。
    • 那么,对于我嵌入了 GA 和 Disqus 代码的普通网页,是否有理由不使用 https 而不是协议相关的 URL?
    • 如果资产通过 https 可用,则没有理由使用协议相对 URL
    【解决方案2】:

    如果资产通过 https 可用,则没有理由使用协议相对 URL。指定 https 本质上比保持开放式更安全,这为注入不安全的 http 提供了机会。性能不是原因(参考:https://istlsfastyet.com/)。

    您提到的那些服务将切换到纯 https 协议只是时间问题:围绕单一协议/URL 进行整合并仅提供安全交付的资产符合他们的最大利益。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-12
      • 2013-03-12
      • 2019-12-23
      • 1970-01-01
      • 1970-01-01
      • 2011-10-01
      • 2015-08-05
      • 2012-05-05
      相关资源
      最近更新 更多