【问题标题】:Need scheme relative url clarification需要方案相关网址说明
【发布时间】:2014-08-20 10:22:05
【问题描述】:

我一直在阅读有关 url 的信息。绝对,方案相对,根相对,位置相对。
我仍然不明白这两者之间的区别:

//domain.com/index.html           - scheme relative
domain.com/index.html             - ?

问题 1:
如果我错了,请纠正我//domain.com/index.html 将解析为这样的绝对网址:

http://domain.com/index.html
https://domain.com/index.html
ftp://domain.com/index.html
file://domain.com/index.html    -- if in email

而且浏览器的行为会有所不同:ie6 不支持,ie7,8 会获取两次数据(http https)。

问题 2:
domain.com/index.html 将如何解决?与 Q1 中的方案相对 url 相同吗?或者是别的什么?

问题 3:
这些网址之间有什么区别,是什么,为什么?

//www.domain.com/index.html
www.domain.com/index.html

问题 4:
//www.domain.com/index.html 将如何解决?

问题 5:
www.domain.com/index.html 将如何解决?

【问题讨论】:

    标签: http url web https protocols


    【解决方案1】:

    查看此类 URL 非常容易,应用您对它们可能含义的人类知识,而不是通过网络浏览器等软件实现的更简单的规则。

    最简单的 URL 类型(或更准确地说是 URI,因为有些方案不代表位置,只有标识符)是绝对的;它以一个方案开头,然后是一个冒号,并且不需要上下文来解决它。例子:

    • http://example.com
    • https://www.example.com/foo/bar.baz
    • http://127.0.0.1:8001
    • mailto:someone@example.com
    • data:text/plain,test
    • urn:example

    然后是位置相关的 URL;也就是说,任何没有方案且没有前导斜线的东西。这些替换当前上下文中斜线之后的所有内容,但保留其余部分。如果当前上下文是http://example.com/foo/bar.baz,你可以有这样的相对 URL:

    • bob.baz -> http://example.com/foo/bob.baz
    • thing/widget.gizmo -> http://example.com/foo/thing/widget.gizmo
    • example.com/page -> http://example.com/foo/example.com/page

    请注意,最后一个示例乍一看像一个域名,但实际上与所有其他相对 URL 完全相同。

    带有前导斜杠的根相对 URL 是相似的,但不是在最后一个斜杠之后删除,而是在第一个斜杠之后删除。给定相同的上下文,前面的例子变成:

    • /bob.baz -> http://example.com/bob.baz
    • /thing/widget.gizmo -> http://example.com/thing/widget.gizmo
    • /example.com/page -> http://example.com/example.com/page

    相对于根的 URL 也可以包含冒号,因为前导斜杠不能是方案前缀的一部分:

    • /foo:bar -> http://example.com/foo:bar
    • /urn:example -> http://example.com/urn:example

    最后,有相对于方案的 URL,带有 两个 前导斜杠。它们替换原始双斜杠之后的所有内容,因此只保留方案:

    • 如果上下文是http://example.com/foo/bar,那么//example.org/bob 表示http://example.org/bob
    • 如果上下文是https://example.com/foo/bar,那么//example.org/bob 表示https://example.org/bob
    • 如果上下文是http://example.com,那么//foo.bar 表示http://foo.bar

    请注意,最后一个示例在我们看来并不像域名,但它仍然遵循相同的规则。在解析任何相关表单时,不会考虑 URL 是否真的有用

    诸如“以 www 开头”之类的约定。并且“以 .com 结尾”不能依赖,也不能用于确定 URL 是否是相对的,因此您只需遵循以下简单规则即可回答所有问题:

    1. 如果有两个前导斜杠,它是相对于方案的
    2. 如果有一个前导斜杠,它是根相对的
    3. 如果没有前导斜杠,但有冒号,则假定它是绝对 URI
    4. 如果没有前导斜杠,也没有冒号,则为相对位置

    【讨论】:

    • 你说:“看看每个前导斜杠有多少个:如果没有,没有冒号,它是位置相关的”如果有冒号怎么办? ...所以答案是 Q4:(方案相关)http://www.domain.com/index.html 和 Q5:(位置相关)http://example.com/www.domain.com/index.html 提供的基本 URL 是 http:example.com 对吗?
    • @CoR 是的,这些就是答案。冒号的存在是一个(可能有些简化的)规则,用于告诉绝对 URL,例如mailto:foo@example.comdata:text/plain,testurn:example 永远不会被解析为相对 URI。但是,如果使用前导斜线,它们仍然是。
    • 我终于明白了。它值 50 声望。我接受这个答案。但是,如果可能,请编辑您的答案以包括:规则。
    • 编辑了更清晰的摘要和一些额外的示例,现在我不在移动设备上。很高兴它帮助了你。 :)
    • 老实说,你做到了!我以为我对绝对和相对链接都了如指掌。但我无法理解 www.domain.com 被解释为 url 路径的一部分。
    【解决方案2】:

    它们非常不同。第二个是对 path "domain.com/index.html" 的相对引用。

    WRT "domain.com" 与 "www.domain.com":它们只是不同的主机名(或第二种变体中的路径名)

    【讨论】:

    • 如果不是太难,你能解释一下(用普通的、简单的、人类可以理解的语言)所有 4 个 url 以及它们是如何解决的。我知道方案相关将解析为 http://domain... 或 'domain...` 或 'domain...` 其他 3 呢?
    猜你喜欢
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多