こんにちは反応ルータのパラメータは自動的に文字列をデコードしますか?リアクションのルートparamの自動デコードの文字列
パラメータ例えば
私は(CONSOLE.LOGとき、それはC5jb20=
を出力しますC5jb20%3D
でそれを呼び出すとき、私はこのルート
<Route path="/callback/:url"/>
を持っているとは)これは正常な動作です?この動作を変更して、まだエンコードされた文字列を取得することはできますか?
ありがとうございます!
こんにちは反応ルータのパラメータは自動的に文字列をデコードしますか?リアクションのルートparamの自動デコードの文字列
パラメータ例えば
私は(CONSOLE.LOGとき、それはC5jb20=
を出力しますC5jb20%3D
でそれを呼び出すとき、私はこのルート
<Route path="/callback/:url"/>
を持っているとは)これは正常な動作です?この動作を変更して、まだエンコードされた文字列を取得することはできますか?
ありがとうございます!
C5jb20%3D
はURLでエンコードされた文字列で、URLに特殊文字をエンコードする方法です。たとえば、URLパラメータが?redirect=/some/path
の場合、サーバーはスラッシュをルーティングパスとして解釈し、予想されるルーティングを誤ってしまう可能性があります。そのため、URLには?redirect=%2Fsome%2Fpath
というようなものとあなたの例が見えます。
window.location.path
は、元のエンコードされていないURLを持ちます。
またencodeURIComponent
でそれを取り戻すことができます:あなたは、おそらくあなたのユースケースに応じて、しかし、したくない
encodeURIComponent('C5jb20=') // "C5jb20%3D"
。
お返事ありがとうございます。それで、これは反応ルータから期待された動作ですか?なぜなら、そうであれば、paramsから抽出した後にパラメータをデコードしないということです。私は、このエンコードされた文字列に関連した予期しないエラーを持っていたくありません:)もう一度、ありがとう! –
はい、これは期待され、望ましい動作です。 –
問題は、現在ではスペースをURLの文字(+または - )に置き換えることが一般的です。この中にテキストの1つがある場合、それらを区別することは不可能です。例えば。 'iphone7%2B + seller'は自動的にrouteParamsの' iphone7 ++ seller'に変換されます。自動デコードを無効にすることができれば、これを解決できます。 –