【问题标题】:Official name for URL "scheme plus authority"URL“方案加权限”的正式名称
【发布时间】:2015-12-15 21:14:02
【问题描述】:

假设一个绝对的 http 或 https URL。我正在为路径之前的 URL 部分寻找一个“官方”或普遍接受的名称。

    http://foo:bar@example.com:8042/over/there?name=ferret#nose
    \_____________________________/
                  |
              this part

RFC 3986 定义 URL 语法部分如下:

    http://foo:bar@example.com:8042/over/there?name=ferret#nose
    \__/   \______________________/\_________/ \_________/ \__/
      |               |                |            |        |
   scheme         authority           path        query   fragment

RFC 6454 将 URL 的来源(如“相同来源”)定义为三元组(方案、主机、端口):

    http://foo:bar@example.com:8042/over/there?name=ferret#nose
    \__/           \______________/
      \________________/
              |
           origin

因此,这两个术语都不合适。我正在查看的部分是否有一个好的术语,或者我是否坚持“方案(加上://)加上权限”?

【问题讨论】:

    标签: http url rfc3986


    【解决方案1】:

    实际上,路径之前的 URL 部分的名称和 current URL standard 的名称实际上只是 origin

    URL 的 :// 部分只是一个句法(或词法?)工件,在讨论任何使用或处理 URL 的实际行为(当然低级解析器除外)的讨论中从来没有真正需要提及)。

    用户名-密码部分是一个不符合标准的错误功能,现在仅作为历史错误进行讨论。 relevant part of the current URL standard 有话要说;

    没有一致的方式来表示 URL 的用户名或密码 在 URL 字符串中记录。

    因此,在实践中,对于任何符合当前标准如何定义 URL 的 URL 的正常讨论,仅根据其最高级别的部分仅四个部分来谈论 URL 就足够了:它的 origin、它的路径、它的查询(部分)和它的片段(部分)。

    当然,这至少是 current URL standard 本身的限制。

    【讨论】:

    • 好吧,当需要一些句法部分的东西时,“起源”作为一个术语没有帮助。 (还请注意,弃用“userinfo”可以追溯到官方 URI 规范)
    • 感谢您将我指向 WhatWG URL 标准。然而,虽然我很欣赏 WhatWG 的目标,但在我的情况下,说 URL 不能包含用户信息并不是一个真正的选择,而且 WhatWG 仍然明确地将来源定义为不包括用户名和密码。
    【解决方案2】:

    它必须只是“计划加权限”。请记住,您不能拥有仅具有方案和权限的有效 URI,因此该组合不会作为一个单元进行讨论,因此最终没有名称。

    还要注意,HTTP URI 中从未允许使用 userinfo;特定方案可以禁止或限制特定部分的值。一些浏览器有一个设计缺陷,他们会接受用户信息和基于身份验证的标头,但现在大多数浏览器至少会警告这样做,如果他们允许的话。

    【讨论】:

    • 嗯,你是对的。在 RFC7230 之前,HTTP URL 中不允许使用 userinfo,RFC7230(奇怪地)说它“现在”被禁止(尽管它实际上只是强烈反对它们)。无论如何,HTTP 存在于浏览器之外,并且 userinfo 还没有完全消亡。不过,它确实加强了使用“起源”一词的理由。
    • 在浏览器之外,userinfo 被更严格地禁止,而浏览器存在滥用 userinfo 部分的设计缺陷,它们在继续之前将其转换为真正的 HTTP URI。其他 HTTP 软件不会这样做。
    • 错了,告诉curlwgethggit,以及使用 HTTP 的任何数量的更深奥的工具。
    • 好的,很公平。虽然它们仍然不是 HTTP URI,但它们本身仍然会将它们变成真正的 HTTP URI。
    猜你喜欢
    • 2011-07-30
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    • 2017-02-11
    • 2015-05-06
    相关资源
    最近更新 更多