【问题标题】:URL without "http|https"不带“http|https”的网址
【发布时间】:2012-02-28 00:37:10
【问题描述】:

我刚刚从一位同事那里得知,在链接中省略 URL 的“http | https”部分将使该 URL 使用其所在页面使用的任何方案。

例如,如果我的页面通过http://www.example.com 访问并且我有一个链接(注意前面的“//”):

<a href="//www.google.com">Google</a>

该链接将转到http://www.google.com

但如果我使用相同的链接访问https://www.example.com 的页面,它将转到https://www.google.com

我想在网上查找有关这方面的更多信息,但我想不出一个好的搜索词组。如果我搜索“没有 HTTP 的 URL”,则返回的页面是关于具有以下形式的 url:“www.example.com”,这不是我要找的。

您会称其为无方案 URL 吗?无协议 URL?

这适用于所有浏览器吗?我在 FF 和 IE 8 中对其进行了测试,并且两者都适用。这是标准的一部分,还是我应该测试更多的浏览器?

【问题讨论】:

  • 作为参考(因为您询问要搜索哪些术语),谷歌搜索将我带到最初的 StackOverflow 问题是:“absolute url without protocol”
  • 您没有指定它是 http 还是 https,因此浏览器会通过假设链接来自同一页面的最后一页来为您决定。
  • 谢谢大卫,复制的链接回答了我所有的问题
  • @David:确切地说,如果它没有协议,你就不会称它为绝对 URL;它是一个相对 URL。

标签: http url https


【解决方案1】:

协议相对 URL

您可能会在某些浏览器中收到异常的安全警告。

有关简要定义,另请参阅 Wikipedia Protocol-relative URLs

有一次,it was recommended;但继续前进,it should be avoided

另请参阅堆栈溢出问题Why use protocol-relative URLs at all?

【讨论】:

    【解决方案2】:

    称为network-path reference(缺少的部分称为schemeprotocoldefined in RFC3986 Section 4.2

    4.2 相对参考

    相对引用利用了分层语法 (第 1.2.3 节)表示相对于名称空间的 URI 引用 另一个分层 URI。

      relative-ref  = relative-part [ "?" query ] [ "#" fragment ]
    
      relative-part = "//" authority path-abempty
                    / path-absolute
                    / path-noscheme
                    / path-empty
    

    相对引用所引用的URI,也称为目标URI,是通过引用解析得到的 第 5 节的算法。

    以两个斜杠字符开头的相对引用是 称为网络路径参考(强调我的);这种引用很少使用。 以单个斜杠字符开头的相对引用称为绝对路径引用。不以斜线字符开头的相对引用称为相对路径引用。

    包含冒号字符的路径段(例如,“this:that”)不能用作相对路径引用的第一段,因为它会被误认为是方案名称。这样的段之前必须有一个点段(例如,“./this:that”)以进行相对路径引用。

    【讨论】:

    • // 不能用于 html 的基本标签。我设置了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    • 2017-08-16
    • 2012-08-09
    • 2011-02-06
    相关资源
    最近更新 更多