2016-04-06 11 views
1

私は 例えばURLに文字列値を渡しています:http://localhost:8080/webservice/useradmin/a%bghijlk123/0978+ghエンコードパラメータはURL代替オプションとして渡されますか?

"AB%ghijlk123/0978 + GH" は、URLを壊し文字列。 これを克服するために利用できるオプションは何ですか? 文字列のエンコードは唯一のオプションですか?最小限のコード変更が必要です。これを達成するために、どんなサーバー側構成も使用できますか? ご提案をお願いいたします。

+0

最初の場所でこの文字列をどうやって作りましたか(プレーンテキストとエンコーディング方法は何ですか)?これまでに試したコードを共有できますか? –

+0

この文字列はランダムに生成されています..... base64の符号化方式を使用しています。エンコード以外のオプションが必要です – NimmyKrish

+0

生成された文字列でスラッシュを削除する必要があります。 /はURLのパス用に予約されているためです。あなたは英数字プラス$ -_を使用することができます+!* '()、 –

答えて

1

文字列を唯一のオプションでエンコードしていますか?

これは唯一の正しいオプションです。完全なURLのために、あなたにab%25ghijlk123%2F0978%2Bghを与える

使用URLEncoder.encode("ab%ghijlk123/0978+gh", "UTF-8")

http://localhost:8080/webservice/useradmin/ab%25ghijlk123%2F0978%2Bgh 

URL http://localhost:8080/webservice/useradmin/a%bghijlk123/0978+ghが無効です。それらが他の意味を持っているので、許可されなければならない

ALPHA:   "a"-"z", "A"-"Z" 
DIGIT:   "0"-"9" 
Special chars: - . _ ~ ! $ & ' () * + , ; = : @ 
pct-encoded:  "%" HEXDIG HEXDIG 

値:/(パス

URL仕様(RFC3986)は、経路セグメント(/によって分離値)のみからなることができると述べていますセパレータ)、?(クエリの開始)、#(フラグメントの開始)、および%(2桁の16進数でエンコードされたchar)

ご覧のとおり、%記号はパーセント符号化文字としてのみ許可されているため、%bgはURLを無効にします。 useradmin/後部分はab%ghijlk123/0978+ghことになっている場合

は、それは上記のように符号化されなければなりません。

サーバーが「400:Bad request」と拒否した場合、サーバーにエラーが発生しています。

+0

私は同じURLEncoderを試した...事は%私は、http:// localhost:8080/webservice/useradmin/ab%25ghijlk123%2F0978%2Bgh'というURLを使用している場合、リクエストが不正です。サーバーに正常に到達する – NimmyKrish