【问题标题】:Beginning external site links with "//" [duplicate]以“//”开头的外部站点链接[重复]
【发布时间】:2012-03-03 09:46:38
【问题描述】:

可能重复:
Is it valid to replace with // in a <script src=“…”>?
Links start with two slashes

我现在已经在几个网站上看到了这个。一个简单的例子是查看维基百科登陆页面的来源:

<link rel="shortcut icon" href="//en.wikipedia.org/favicon.ico" />
<link rel="apple-touch-icon" href="//upload.wikimedia.org/wikipedia/commons/f/f1/Wikipedia-mobile-icon.png" />
<link rel="copyright" href="//creativecommons.org/licenses/by-sa/3.0/" />

// 开头的外部链接有什么标准吗?这样做是为了避免下载额外的https?: 并保存一些字符,因为大多数浏览器都足够聪明,可以自行添加其余的方案吗?或者这是合法的事情,也许有其他原因?

【问题讨论】:

标签: html hyperlink web-standards


【解决方案1】:

这通常称为相对协议 URL,它允许浏览器使用与加载页面相同的协议下载资源。所以如果用户通过https url加载了页面,则//指定的资源将通过https加载,否则通过常规http加载。

它可以帮助您防止的一件事是旧版本 IE 中丑陋的用户不友好消息,指出该页面包含安全和非安全资源。

Paul Irish 写了一篇很好的博客文章:

【讨论】:

    【解决方案2】:

    这允许您在不指定 http 或 https 的情况下下载资源;它将使用您当前使用的任何内容。

    【讨论】:

      【解决方案3】:

      未在 URL 中指定方案将导致浏览器采用当前方案。你可以在这里阅读一篇很好的文章:

      http://paulirish.com/2010/the-protocol-relative-url/

      这是它的主要好处:

      如果浏览器正在通过 HTTPS 查看当前页面,则 它将使用 HTTPS 协议请求该资产,否则它将 通常* 使用 HTTP 请求它。这可以防止可怕的“此页面 IE 中包含安全和非安全项目”错误消息, 将您的所有资产请求保持在同一个协议中。

      有一些怪癖...

      当用于样式表的&lt;link&gt;@import 时,IE7 和 IE8 下载文件两次。但是,所有其他用途都很好。

      ...但总的来说,您可以安全地使用它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-08
        • 2016-08-15
        • 1970-01-01
        • 1970-01-01
        • 2014-12-23
        • 1970-01-01
        相关资源
        最近更新 更多