【问题标题】:Is the Scheme Optional in URIs?URI 中的 Scheme 是可选的吗?
【发布时间】:2011-03-16 14:16:01
【问题描述】:

我最近被要求向网站添加一些 Woopra JavaScript,并注意到 URL 以双斜杠开头(即省略了该方案)。我以前从未见过这个,所以我试图了解更多关于它的信息,但我唯一能真正找到的是an item on the Woopra FAQ

安装程序中的 Woopra JavaScript 在脚本的 URL 调用中不包含 http。这是对的。 JavaScript 已经过优化,可以在您的网站上快速高效地运行。

但是,一些验证和站点测试/调试服务和工具无法识别代码是正确的。这是正确和有效的。如果警告让您烦恼,只需将 http 添加到脚本的 URL。它不会影响脚本。

(为了清楚起见,URL 是“//static.woopra.com/js/woopra.v2.js”——除了“http”之外,冒号被省略。)

有没有关于这种做法的更多信息?如果这确实有效,那么一定有一个规范来讨论它,我非常希望看到它。

提前感谢您满足我的好奇心!

【问题讨论】:

    标签: url uri


    【解决方案1】:

    这是一个有效的 URL。它被称为RFC 3986 中定义的“网络路径引用”。当您不指定方案/协议时,它将回退到当前方案。因此,如果您通过 https:// 查看页面,所有网络路径引用也将使用 https。

    例如,这里有一个指向RFC 3986 文档的链接,但带有网络路径参考。如果您通过 https 来查看此页面(尽管看起来您不能将 https 与 StackOverflow 一起使用),该链接将反映您当前的 URI 方案,这与第一个链接不同。

    【讨论】:

      【解决方案2】:

      参见RFC 3986,第 3 节:

      通用 URI 语法由 组件的分层序列 称为计划、授权、 路径、查询和片段。

        URI         = scheme ":" hier-part [ "?" query ] [ "#" fragment
      

      ]

        hier-part   = "//" authority path-abempty
                    / path-absolute
                    / path-rootless
                    / path-empty
      

      方案和路径组件是 需要,但路径可能是
      空(无字符)。

      【讨论】:

      • 所以 Woopra 完全错误地认为它是“正确和有效的”?
      猜你喜欢
      • 1970-01-01
      • 2019-11-05
      • 2015-12-10
      • 2015-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-16
      • 2023-04-05
      相关资源
      最近更新 更多