HTTP / FTP:URL中的尾部斜杠是否意味着另一个资源

时间:2016-09-27 06:42:33

标签: http url ftp

我有两个网址:

http://example.com/foo

http://example.com/foo/

它们是不同的网址还是相同的?同样的问题是关于FTP协议(ftp://example.com/foo[/])

2 个答案:

答案 0 :(得分:3)

是的,它们是不同的资源。

这在HTML中尤为重要。

如果您有相对链接bar<a href="bar">blah</a>):

  • https://www.example.com/foo中,该链接解析为https://www.example.com/bar

  • https://www.example.com/foo/中,该链接解析为https://www.example.com/foo/bar

但HTTP服务器通常会将https://www.example.com/foo重定向到https://www.example.com/foo/以避免这种混淆。

使用FTP协议,它可能是特定于客户端的,因为FTP协议本身不适用于URL。

因此,当https://www.example.com/foo实际上是文件夹时,如果使用foo,则取决于FTP客户端的行为方式。在这种情况下,“FTP客户端”通常表示Web浏览器,因为它们与URL一起使用。专用FTP客户端通常也不能使用URL。

答案 1 :(得分:3)

在URI标准中,相关部分为Normalization and Comparison

  1. 执行simple string comparison后,这些URI不等效。

  2. 应用syntax-based normalization后,这些URI不等效。

  3. 对于scheme-based normalization,您必须参考http / httpsftp URI方案的规范,并检查是否有任何特定于方案的规则定义如下:

  4. 对于protocol-based normalization,您必须考虑重定向等问题(如果是http)。

  5. tl; dr: URI 不等于

    请注意,HTTP(S)URI中的空路径不是这种情况,因为上面链接的部分定义了:

      

    [...]空路径组件相当于“/”[...]

    的绝对路径

    因此以下URI 等同于

    http://example.com/
    
    http://example.com
    

    顺便说一句,对于基于协议的规范化,标准以您的情况为例:

      

    [...]例如,如果他们观察到诸如

    之类的URI
    http://example.com/data
    
         

    重定向到仅在尾部斜杠

    中不同的URI
    http://example.com/data/
    
         他们可能会认为这两者在未来是等价的。 [...]