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 文件)可以从 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 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 属性中的两个正斜杠[重复]的主要内容,如果未能解决你的问题,请参考以下文章