可能的重复:
以两个斜杠开头的 URI……它们的行为如何?
绝对 URL 省略协议(方案)以保留当前页面之一
脚本和链接标签的简写为 // ?有人以前看过/用过这个吗?

我正在查看源代码 HTML5重置 当我注意到 下一行:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>

为什么 URL 以两个正斜杠开头?这是一个简写吗 http://?

有帮助吗?

解决方案

“两个正斜杠”是“无论现在使用什么协议”的常见简写。

最出名的是“协议相对 URL”,当元素(例如示例中的 JS 文件)可以从以下任一位置加载时,它们特别有用: http 或一个 https 语境。通过使用协议相对 URL,您可以避免实现

if (window.location.protocol === 'http:') {
    myResourceUrl = 'http://example.com/my-resource.js';
} else {
    myResourceUrl = 'https://example.com/my-resource.js';
}

整个代码库中的逻辑类型(当然,假设服务器位于 example.com 能够通过两者提供资源 httphttps).

现实世界中一个突出的例子是 Magento 电子商务引擎:出于性能原因,商店的页面使用普通 http 默认情况下,而结账是 https 已启用。

当硬编码资源时(即网站标题中的促销横幅)由非协议相对 URL(即 http://example.com/banner.jpg),客户达到 https 启用结账时会受到相当不友好的欢迎

“此页面上存在不安全元素”

提示 - 正如您可以想象的那样,这会让一般不懂技术的人感到困惑。

如果上述资源是通过引用的 //example.com/banner.jpg 不过,浏览器会负责在前面添加正确的协议。

长话短说:即使混合 http/https 环境的可能性很小,也只需使用双斜杠/协议相对 URL 来加载资源 — 假设提供内容的主机同时启用了 http 和 https。

其他提示

它将自动添加 https 或 http,具体取决于请求的发出方式。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top