5

救命!我发现某种 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 编码,它可以完美地工作:'http://dottech.org/95285%2fthis-is-the-pacific-barreleye-a-fish-with-a-transparent-head-amazing-photo-of-the-day

为什么?

4

1 回答 1

5

/保留字符。它等于%2f. 如果您需要没有定义含义的斜线,您将使用编码形式。

请参阅RFC 3986:“保留字符”

保留字符的目的是提供一组可与 URI 中的其他数据区分开来的定界字符。在用相应的百分比编码八位字节替换保留字符方面不同的 URI 是不等价的。对保留字符进行百分比编码,或对与保留字符相对应的百分比编码八位字节进行解码,将改变大多数应用程序解释 URI 的方式。

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

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

(但是,它似乎仍然必须是/%2f在他们的情况下。)

如果您尝试使用 Wikipedia 文章,它会重定向到首页:

http://en.wikipedia.org/wiki%2fStack_Overflow
于 2013-02-02T03:13:51.260 回答