url/src/href 属性中的两个正斜杠[重复]
-
10-12-2019 - |
题
可能的重复:
以两个斜杠开头的 URI……它们的行为如何?
绝对 URL 省略协议(方案)以保留当前页面之一
脚本和链接标签的简写为 // ?有人以前看过/用过这个吗?
<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
能够通过两者提供资源 http
和 https
).
现实世界中一个突出的例子是 Magento 电子商务引擎:出于性能原因,商店的页面使用普通 http
默认情况下,而结账是 https
已启用。
当硬编码资源时(即网站标题中的促销横幅)由非协议相对 URL(即 http://example.com/banner.jpg
),客户达到 https
启用结账时会受到相当不友好的欢迎
“此页面上存在不安全元素”
提示 - 正如您可以想象的那样,这会让一般不懂技术的人感到困惑。
如果上述资源是通过引用的 //example.com/banner.jpg
不过,浏览器会负责在前面添加正确的协议。
长话短说:即使混合 http/https 环境的可能性很小,也只需使用双斜杠/协议相对 URL 来加载资源 — 假设提供内容的主机同时启用了 http 和 https。
其他提示
它将自动添加 https 或 http,具体取决于请求的发出方式。
不隶属于 StackOverflow