url/src/href 属性中的两个正斜杠[重复]

Posted

技术标签:

【中文标题】url/src/href 属性中的两个正斜杠[重复]【英文标题】:Two forward slashes in a url/src/href attribute [duplicate] 【发布时间】:2012-03-27 15:11:24 【问题描述】:

可能重复:URI starting with two slashes … how do they behave?Absolute URLs omitting the protocol (scheme) in order to preserve the one of the current pageshorthand as // for script and link tags? anyone see / use this before?

当我注意到following line时,我正在查看html5 Reset的来源:

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

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

【问题讨论】:

Absolute URLs omitting the protocol (scheme) in order to preserve the one of the current page 的可能重复项,另请参阅 Can I change all my http:// links to just //? Is it valid to replace http:// with // in a <script src=“http://…”>? URI starting with two slashes ... how do they behave? 的可能副本 【参考方案1】:

“两个正斜杠”是“使用用于加载当前页面的任何协议请求引用的资源”的常用简写。

最出名的是“协议相对 URL”,当元素(例如您示例中的 JS 文件)可以从 httphttps 上下文中提供和/或请求时,它们特别有用。通过使用协议相对 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 1.X 电子商务引擎:出于性能原因,类别和产品页面默认使用纯 http,而结帐则启用 https

如果通过非协议相关 URL(即http://example.com/banner.jpg)引用某些资源(例如网站标题中的促销横幅),则到达启用https 的结帐的客户会受到相当不友好的欢迎

“此页面上有不安全的元素”

提示 - 可以放心地假设,这对企业来说并不是很好。

如果上述资源是通过 //example.com/banner.jpg 引用的,浏览器会通过适当的协议在普通的 http 产品/类别页面和启用 https 的结帐流程中加载它。

tl;dr:即使有最轻微的混合 http/https 环境的可能性,只需使用双斜杠/协议相对 URL 来引用资源 - 假设服务它们的主机同时支持 http 和 https。强>

【讨论】:

小心,如果您在 SharePoint 2010 中执行此操作,如果您的内容作者在安全网站上为公共网站上使用的页面创作,SP 将自动将标记更改为 https。在 http 访问的 url 上,图像将始终为 https。与 Telerik Rad 编辑器确认......不确定香草 SP。 是的,但为什么不是一个斜线呢?这不是做同样的事情吗? @mckoss :如果文件在同一个域中,则单斜杠效果很好。当然,我可以通过引用/resource.jpg 来获取http(s)://mydomain.com/resource.jpg。对于http(s)://some-other-dudes-domain.com/other-resource.jpg,单斜杠显然不行。 @vzwick,浏览器什么时候开始支持这种语法的?从IE6时代开始? @Pacerier - 这至少从RFC 3986 开始是标准化的,所以是 2005 年的。可能以前也工作过。【参考方案2】:

它会根据请求的方式自动添加 https 或 http。

【讨论】:

值得注意的是,这不仅会填充 http 或 https,还会填充浏览器支持的任何其他协议。以 FTP 为例。它告诉浏览器使用正在使用的相同协议。 (很抱歉对旧帖子发表评论!)

以上是关于url/src/href 属性中的两个正斜杠[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何从日期用逗号替换正斜杠[重复]

用正斜杠“/”动态替换反斜杠“\”[重复]

CSS min-height 属性中的反斜杠 [重复]

如何在VIM findsearch中转义反斜杠和正斜杠?[重复]

删除网址中第一个正斜杠之前的所有内容[重复]

fileseprator代替java中路径中的正斜杠