【问题标题】:What does a dot mean in a URL path?URL 路径中的点是什么意思?
【发布时间】:2011-08-25 21:57:16
【问题描述】:

question regarding a jQuery Ajax problem 中,提问者试图在相对 URL 的开头使用 .。我建议他删除它,但不知道一个点实际上在那里做了什么。

他的相对 URL 如下所示:

./delete-misc/test-ajax-code.php

我尝试查看 RFC,但没有成功。我知道点在命令行(Linux 或 Win)中的作用,它代表当前目录。

我想知道:这在 Internet 上的 URL 是如何工作的?它有任何最佳实践用途吗?欢迎详细解释。

【问题讨论】:

    标签: url relative-path


    【解决方案1】:

    URL前面的./相当于当前路径。所以./delete-misc/test-ajax-code.phpdelete-misc/text-ajax-code.php 都是相对路径。在您发布的答案中,您要求仅删除点,因此 /delete-misc/test-ajax-code.php 的路径将转换为绝对路径而不是相对路径。

    编辑:还有一件事——. 是当前目录,.. 是父目录。作为 phihag cmets,这些确实应该在代码中避免和保护。目录遍历可作恶。

    【讨论】:

    • 我不认为您的第三个示例是绝对路径。它是从根计算的相对路径(以/ 开头)。
    • @bazmegakapa:根据 RFC 3986,这是一条绝对路径。
    • @kapa:我认为混淆可能在“绝对 URI”和“绝对路径”(或 RFC 3986 中定义的“绝对路径”)之间。 “绝对 URI”被定义为 scheme ":" hier-part [ "?" query ],这显然不是。
    【解决方案2】:

    path segment . 通常用于相对路径引用的开头,并在 reference resolution 期间被删除,即将相对 URI 引用解析为绝对 URI 的过程:

    路径段“.”和“..”也称为点段,分别是 为路径名层次结构中的相对引用而定义。他们 旨在用于相对路径引用的开头 (Section 4.2) 表示层次结构中的相对位置 名字树。这类似于他们在某些操作中的角色 系统的文件目录结构以指示当前目录 和父目录,分别。但是,与文件不同的是 系统,这些点段仅在 URI 路径中解释 层次结构并作为解决过程的一部分被删除 (Section 5.2)。

    Remove Dot Segments algorithms 描述了如何在特定的基本路径上下文中解释这些点段。

    在您的情况下,./delete-misc/test-ajax-code.phpdelete-misc/test-ajax-code.php 是等效的。但是在某些情况下,相对路径可能会被误解为绝对 URI,例如在像search:foo 这样的第一个路径段中有一个:,它与./search:foo 不同,因为前者是绝对URI,而后者是相对URI 路径。

    【讨论】:

    • 谢谢,正是我想要的。感谢您的链接。
    • 似乎在前面加上“.”使浏览器尊重基本标签的值(例如<base href="/some/path/">
    • 警告:如果您的系统在此 url:http://example.com/folder 和此 url:http://example.com/folder/ 提供相同的内容,那么./page 页面上的 url 将转到 http://example.com/page 和 @987654339 @分别。
    • @Chintsu 这仅仅是因为点前缀使 URL 路径 relative - 如上所述。而/some/path/ 形式的 URL 是 root-relative (顺便说一句,两者都尊重基本标签 - 但行为自然不同)。 ./some/path/(带点前缀)和some/path(相对路径,不带./)是一样的。
    猜你喜欢
    • 2021-08-10
    • 2022-09-28
    • 1970-01-01
    • 2012-03-12
    • 2023-04-06
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多