2017-01-12 3 views
1

こんにちは反応ルータのパラメータは自動的に文字列をデコードしますか?リアクションのルートparamの自動デコードの文字列

パラメータ例えば

私は(CONSOLE.LOGとき、それはC5jb20=を出力しますC5jb20%3D

でそれを呼び出すとき、私はこのルート

<Route path="/callback/:url"/> 

を持っているとは)これは正常な動作です?この動作を変更して、まだエンコードされた文字列を取得することはできますか?

ありがとうございます!

答えて

1

C5jb20%3DはURLでエンコードされた文字列で、URLに特殊文字をエンコードする方法です。たとえば、URLパラメータが?redirect=/some/pathの場合、サーバーはスラッシュをルーティングパスとして解釈し、予想されるルーティングを誤ってしまう可能性があります。そのため、URLには?redirect=%2Fsome%2Fpathというようなものとあなたの例が見えます。

window.location.pathは、元のエンコードされていないURLを持ちます。

またencodeURIComponentでそれを取り戻すことができます:あなたは、おそらくあなたのユースケースに応じて、しかし、したくない

encodeURIComponent('C5jb20=') // "C5jb20%3D" 

+0

お返事ありがとうございます。それで、これは反応ルータから期待された動作ですか?なぜなら、そうであれば、paramsから抽出した後にパラメータをデコードしないということです。私は、このエンコードされた文字列に関連した予期しないエラーを持っていたくありません:)もう一度、ありがとう! –

+1

はい、これは期待され、望ましい動作です。 –

+0

問題は、現在ではスペースをURLの文字(+または - )に置き換えることが一般的です。この中にテキストの1つがある場合、それらを区別することは不可能です。例えば。 'iphone7%2B + seller'は自動的にrouteParamsの' iphone7 ++ seller'に変換されます。自動デコードを無効にすることができれば、これを解決できます。 –

関連する問題