为什么对域名后的第一个斜杠进行 url 编码会破坏 url?

2023-11-23

萨尔维特!我发现某种 url 编码方式会破坏链接。作为记录%2f代表正斜杠字符:/

现在,考虑一下: 原文链接:http://dottech.org/95285/this-is-the-pacific-barreleye-a-fish-with-a-transparent-head-amazing-photo-of-the-day

javascript (encodeURIComponent) urlencoded 链接:http://dottech.org%2f95285%2fthis-is-the-pacific-barreleye-a-fish-with-a-transparent-head-amazing-photo-of-the-day

现在,如果您将编码的链接粘贴到浏览器的地址栏中,它就会损坏(Firefox、Chrome、IE)。

但是,如果您不进行 url 编码first正斜杠,它完美地工作: 'http://dottech.org/95285%2fthis-is-the-pacific-barreleye-a-fish-with-a-transparent-head-amazing-photo-of-the-day

Why?


The /是保留字符。它是not相当于%2f。如果你需要斜线without其定义的含义,您将使用编码形式。

See RFC 3986:“保留字符”:

保留字符的目的是提供一组分隔符 可与 URI 中的其他数据区分开来的字符。 URI 的不同之处在于用它的保留字符替换 相应的百分比编码八位字节不等效。百分- 编码保留字符,或解码百分比编码的八位字节 对应于保留字符,将改变 URI 的方式 大多数应用程序都会解释。

如果不使用保留字符,mentionend URL 仍然有效的原因/对于第二个斜杠:他们的 CMS 只是查找 URL 中的 ID 部分。所以你可以在 URL 中添加任何你想要的内容,例如以下应该仍然有效:

http://dottech.org/95285/hey-this-URL-got-featured-at-stackoverflow

(不过看来还是得/ or %2f在他们的情况下。)

如果您尝试使用维基百科文章,它会重定向到首页:

http://en.wikipedia.org/wiki%2fStack_Overflow
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么对域名后的第一个斜杠进行 url 编码会破坏 url? 的相关文章

随机推荐