Skip to main content

4. Origin of a URI (URI的源)

4. Origin of a URI (URI的源)

URI 的源 (origin) 是由以下算法计算的值:

  1. 如果 URI 不使用分层元素 (hierarchical element) 作为命名权限 (naming authority) (参见 [RFC3986], 第 3.2 节), 或者 URI 不是绝对 URI (absolute URI), 则生成一个新的全局唯一标识符 (globally unique identifier) 并返回该值。

    注意: 对同一 URI 多次运行此算法可能每次产生不同的值。通常, 用户代理计算例如 HTML 文档的源一次, 并将该源用于后续的安全检查, 而不是为每次安全检查重新计算源。

  2. uri-scheme 为 URI 的方案 (scheme) 组件, 转换为小写。

  3. 如果实现不支持 uri-scheme 给定的协议, 则生成一个新的全局唯一标识符并返回该值。

  4. 如果 uri-scheme 是 "file", 实现可以 (MAY) 返回实现定义的值。

    注意: 历史上, 用户代理授予来自 file 方案的内容极大的特权。但是, 授予所有本地文件如此广泛的特权可能导致特权提升攻击 (privilege escalation attack)。一些用户代理成功授予本地文件基于目录的特权, 但这种方法尚未被广泛采用。其他用户代理为每个文件 URI 使用全局唯一标识符, 这是最安全的选项。

  5. uri-host 为 URI 的主机 (host) 组件, 转换为小写 (使用 [RFC4790] 中定义的 i;ascii-casemap 排序规则)。

    注意: 本文档假设用户代理在构造 URI 时执行国际化域名应用 (Internationalizing Domain Names in Applications, IDNA) 处理和验证。特别是, 本文档假设 uri-host 将仅包含 LDH 标签 (LDH label), 因为用户代理将已经将任何非 ASCII 标签转换为其相应的 A 标签 (A-label) (参见 [RFC5890])。因此, 基于源的安全策略对用户代理采用的 IDNA 算法敏感。有关进一步讨论, 请参见第 8.4 节。

  6. 如果 URI 没有端口 (port) 组件:

    1. uri-porturi-scheme 给定协议的默认端口。

    否则:

    1. uri-port 为 URI 的端口组件。
  7. 返回三元组 (uri-scheme, uri-host, uri-port)


📊 翻译质量自检

  • 段落对齐: 原文 7 段 = 译文 7 段
  • 链接格式: 所有章节标题已转为链接
  • 术语双语: 首次术语已标注双语
  • RFC 2119: 关键词已合理翻译 (MAY/可以)
  • MDX 安全: URL 已包裹反引号, HTML 已自闭合
  • 标点规范: 已符合中文使用英文标点规范
  • 清理杂项: 已移除页码/页眉
  • 语言纯净: 内容为真实的简体中文, 无其他语言混入
  • 目录正确: 文件已放置在 zh-Hans 目录中

📍 当前进度

  • RFC 编号: 6454
  • 目标语言: 🇨🇳 简体中文 (zh-Hans)
  • 已完成章节: 1, 2, 3, 4
  • 当前章节: 4 (完成)
  • 总体进度: 40%