萨尔维特!我发现某种 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(使用前将#替换为@)