是否存在协议相对 URL 优先于 HTTPS 的情况



Protocal-relative URL

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

反模式声明

人们普遍声称应该完全放弃协议相对的URL,转而支持HTTPS;我最近的一个拉取请求被拒绝了(最终只接受HTTPS)。

问题所在

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

是否有理由为什么 Web 服务仍然使用不安全的协议相对 URL 而不是 HTTPS?

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

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

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

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

相关内容

最新更新