reactjs - 可以在 url 中使用未编码的保留字符吗?
问题描述
我需要在查询字符串中添加多个嵌套路径。为此,我对各个路径名进行编码,并将它们与 /(分隔符)结合起来。如果路径中包含斜杠,它将被编码为 %2F..但是我们没有编码分隔符斜杠(用于分割路径)
示例:
输入1:a->b->c 输入2:path_with_/_slash->d->e
输出:?q=a/b/c+path_with_%2F_slash/d/e
注意:我手动创建查询字符串(不使用 urlsearchparams,因为它编码所有斜线,包括分隔符)
可以在查询字符串中使用未编码的斜杠(用作分隔符)吗?这会在任何浏览器中产生任何问题吗?有没有更好的方法来处理这种情况?
解决方案
如果您手动形成查询字符串,则必须遵循URL 标准第 5.2 节“application/x-www-form-urlencoded 序列化”中概述的过程:
- 让输出为空字符串。
- 对于每个元组的元组:
- 让 name 是使用编码、元组名称、application/x-www-form-urlencoded percent-encode 集和 true 编码后运行 percent-encode 的结果。
- 令 value 为使用 encoding 编码后运行 percent-encode 的结果、元组的值、application/x-www-form-urlencoded percent-encode 集和 true。
- 如果输出不是空字符串,则将 U+0026 (&) 附加到输出。
- 追加名称,后跟 U+003D (=),后跟值,以输出。
- 返回输出。
除非您手动滚动自己的服务器,否则任何功能/中间件/等。在路由处理期间使用 url 查询将自动为您解码这些值。
推荐阅读
- java - 线程“main”中的异常 java.lang.NoClassDefFoundError: org/kie/api/KieServices$Factory
- c# - Azure Fabric 服务中的不同辅助角色是否共享对象?
- android - Facebook 无法获取所有用户照片
- soap - 坏信封标签:SOAP 服务
- visual-studio - Visual Studio 2017 启动时崩溃显示一些依赖包错误
- c# - DataGridview 单元格未在 WinForms 应用程序 C# 中扩展
- ios - 从 UITableViewCell 获取数据
- android - Webview 应用程序下载不起作用
- wordpress - 如何使用过滤器或重写来更改参数以在子主题中输出所需的永久链接
- vba - 类变量作为 VBA 中 For 循环的计数器