我对编码的网址感到困惑。
例如,当我编写浏览器时:
stackoverflow.com/questions
我可以成功查看该页面。
然而,当我写:
stackoverflow.com%2Fquestions
我无法查看。
由于%2F 表示“/”,我想了解为什么这不能正常工作。
我想知道的原因是我收到了一个编码后的网址,我不知道如何在收到该网址后立即解码该网址,以便不会出现错误页面。
答案 0 :(得分:10)
/
是percent-encoding reserved characters
之一。网址使用percent-encoding reserved characters
来定义其语法。只有当这些字符没有在URL中的特殊角色中使用时,才需要对它们进行编码。
编码保留字符的百分比:
! * ' ( ) ; : @ & = + $ , / ? # [ ]
%21 %2A %27 %28 %29 %3B %3A %40 %26 %3D %2B %24 %2C %2F %3F %23 %5B %5D
答案 1 :(得分:5)
%2F
是网址已转义 /
。这意味着,将/
视为字符,而不是目录分隔符。
从本质上讲,它正在寻找域 stackoverflow.com/questions
,而不是路径为stackoverflow.com
的域questions
。
答案 2 :(得分:1)
%2F是您希望在参数中包含/但不希望浏览器导航到其他目录/路由时编写的内容。
因此,如果您将文件路径“root / subdirectory”作为查询字符串参数传递,则需要对其进行编码,如:
http://www.testurl.com/page.php?path=root%2Fsubdirectory
而不是
答案 3 :(得分:1)
使用URL编码,例如用于编码来自HTML表单的字符串URL参数,该表单包含特殊字符,如“/”。编写“stackoverflow.com%2Fquestions”是错误的,在这种情况下,“/”是URL本身的一部分,不得编码。
答案 4 :(得分:1)
%2F
是一个转义字符实体 - 意味着它将包含在名称中,而不是字符/
,它表示目录层次结构as specified in RFC 1630, page 8。