嗨确实反应路由器params自动解码字符串?
例如我有这条路线
<Route path="/callback/:url"/>
当我用C5jb20%3D
当我在console.log()那个参数
时会打印C5jb20=
这是预期的行为吗?我可以更改此行为,以便仍然获得编码的字符串吗?
谢谢!
答案 0 :(得分:2)
C5jb20%3D
是一个URL编码字符串,它是一种对URL中的特殊字符进行编码的方法。例如,如果您有一个类似?redirect=/some/path
的URL参数,则服务器可以将正斜杠解释为路由路径,并弄乱预期的路由。这就是为什么您在网址中看到?redirect=%2Fsome%2Fpath
和您的示例等内容。
window.location.path
将包含原始的未编码网址。
你也可以使用encodeURIComponent
:
encodeURIComponent('C5jb20=') // "C5jb20%3D"
但是,您可能不希望这取决于您的用例。