为什么对域后的第一个斜杠进行 url 编码会破坏 url
Why Does url-encoding the first slash after the domain break the url?
Salvete! 我发现某种 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 link: 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
为什么?
/
是一个保留字符。它不等同于%2f
.如果您需要没有定义含义的斜杠,则可以使用编码形式。
请参阅 RFC 3986:"保留字符":
保留字符的目的是提供一组分隔符可与 URI 中的其他数据区分开来的字符。在将保留字符替换为其相应的百分比编码八位字节不等效。 百分之-对保留字符进行编码,或解码百分比编码的八位字节对应于保留字符,将更改 URI 的方式由大多数应用程序解释。
如果您不使用保留的字符/
作为第二个斜杠,提及结束 URL 仍然有效的原因是:他们的 CMS 只是在 URL 中查找 ID 部分。因此,您可以将所需的任何内容添加到URL中,例如以下内容仍然有效:
http://dottech.org/95285/hey-this-URL-got-featured-at-stackoverflow
(但是,在他们的情况下,似乎仍然必须/
或%2f
。
如果您尝试使用维基百科文章,它会重定向到首页:
http://en.wikipedia.org/wiki%2fStack_Overflow
- 使用 POST 方法通过 ajax 发送的数据在发送到服务器之前是否必须进行 URL 编码
- PHP(PDO)url编码如何在javascript中解码?decodeURI?或解码URI组件
- 以 json 或 url 编码格式发送 js 模型
- 从函数调用控制器并向其传递 URL 编码参数
- PHP 通过 url 编码数据传递字符串
- 如何防止空格被 URL 编码为“javascript:”URL
- 将url编码的数据转换为JSON数组或js数组
- 从HTML5中URL编码的字符串中提取数据
- 我不知道如何写出URL编码的查询字符串
- xmlhttprequest中的url编码
- <输入类型='文件'>提供了URL编码的文件名,导致Android本机浏览器上的FileRea
- javascript中的Url编码
- Angular显示url编码错误,如何获得解码版本
- 最新的base64和url编码库
- 联系API时出现错误的URL编码
- 为什么对href属性使用url编码而不是html编码
- Ajax url编码问题
- Url编码的Javascript问题
- 我应该担心在form元素中使用GET不会;t自动对尖括号进行URL编码
- Node.js:由于URL编码的GET参数,导致外部资源的路径混乱