3

我对编码的 URL 感到困惑。

例如,当我编写浏览器时:

stackoverflow.com/questions

我可以成功查看页面。

但是,当我写:

stackoverflow.com%2Fquestions

我无法查看。

由于%2F表示“/”,我想了解为什么它不能正常工作。

我想知道的原因是我得到了一个编码的 URL,但我不知道如何在收到 URL 后立即解码该 URL,以免出现错误页面。

4

5 回答 5

12

是其中/之一percent-encoding reserved characters。URLpercent-encoding reserved characters用于定义其语法。只有当这些字符在 URL 中没有以它们的特殊角色使用时,才需要对它们进行编码。

百分比编码保留字符:

!       *       '       (       )       ;       :       @       &       =       +       $       ,       /       ?       #       [       ]
%21     %2A     %27     %28     %29     %3B     %3A     %40     %26     %3D     %2B     %24     %2C     %2F     %3F     %23     %5B     %5D
于 2011-11-13T21:42:25.437 回答
5

%2F是一个转义的 URL /。这意味着,将/其视为字符,而不是目录分隔符。

本质上,它是在寻找一个 stackoverflow.com/questions,而不是stackoverflow.com带有路径的域questions

于 2011-11-13T21:40:02.910 回答
1

%2F 是当您想在参数中包含 / 但不希望浏览器导航到不同的目录/路由时编写的内容。

因此,如果您将文件路径“根/子目录”作为查询字符串参数传递,您可能希望将其编码为:

http://www.testurl.com/page.php?path=root%2Fsubdirectory

而不是

http://www.testurl.com/page.php?path=root/subdirectory

于 2011-11-13T21:40:08.833 回答
1

URL 编码用于对来自 HTML 表单的字符串 URL 参数进行编码,其中包含特殊字符,如“/”。写“stackoverflow.com%2Fquestions”是错误的,在这种情况下,“/”是 URL 本身的一部分,不能编码。

于 2011-11-13T21:43:21.763 回答
1

%2F是一个转义字符实体 - 意味着它将包含在名称中,而不是字符/,它表示目录层次结构,如 RFC 1630, page 8 中所述

于 2011-11-13T21:44:00.407 回答