1

エンコードされた SSO トークンを URL に渡しました...したがって、URL は次のようになります

 http://127.0.0.1:7101/CRMOD_UCM-Sankalp-context-root/BrowseFile.jsp?token=%246%24zhxjx%2fpz6dVucl9cgG43ii2Tr4qVnNbeqJg8jCy6Jj7vRvXN4%3d%3b%246%24GlRGp%2fxfEM308NZGmY%2fhjHav2yjHSvbww1l0%2fCcCtcVjzl%2bCQFlQPdBRKO0t1XUmF0I6xLmfQ%2fnb7VgJeSYnvrAb9YUQQ3tvr%2fBZ%2bIRZiBAGU2%2fZg%3d

しかし、変数の値を取得して out.println("SSO Token:"+request.getParameter("token")); を使用して出力すると、それは印刷します

$6$zhxjx/pz6dVucl9cgG43ii2Tr4qVnNbeqJg8jCy6Jj7vRvXN4=;$6$GlRGp/xfEM308NZGmY/hjHav2yjHSvbww1l0/CcCtcVjzl+CQFlQPdBRKO0t1XUmF0I6xLmfQ/nb7VgJeSYnvrAb9YUQQ3tvr/BZ+IRZiBAGU2/Zg=

正しいトークンは URL に存在するものですが、なぜ私は自分の印刷物でこのような異なる値を取得しているのでしょうか...

助けてください......

4

3 に答える 3

3

request.getParameter("token")パラメータ値をデコードするため、出力される値は、URL 内のパラメータ値のデコードされたバージョンです。

詳細については、Java EE、url のアクセント、request.getParameter の間違った値を参照してください。

于 2012-09-26T10:12:26.840 に答える
1

URL では、トークンはURL エンコードされます。一部の文字は URL で特別な意味を持つため、これが必要です。

%nn値を URL エンコードすることにより、これらの特殊文字は特殊文字の文字コードであるコードに置き換えられますnn

Java が自動的にデコードするため、呼び出し時にrequest.getParameter("token")URL エンコードされた値ではなく実際の値が取得されます。

于 2012-09-26T10:15:43.327 に答える
1

デコードしてから次のコードを使用する場合は、エンコードされた値を取得しています。デフォルトではシステムでデコードされますが、あなたの場合はデコードされず、request.getParameter("token") の値を明示的にデコードする必要があります。

String token = request.getParameter("token").toString();
// To decode url
String decodedtoken = URLDecoder.decode(token , "UTF-8");
System.out.println("Decoded token value "+ decodedtoken);

// To encode url 
String encodedtoken = URLEncoder.encode(token , "UTF-8"); 
System.out.println("Encoded token value "+ encodedtoken);
于 2012-09-26T11:07:43.410 に答える