2017-11-15 6 views
1

私はSpringベースのRESTful APIをTomcatサーバーにデプロイしています。このAPIを以下のように呼び出すと( "para"の値はURLエンコードされています)、デバッグすると、コントローラメソッドの "para"の値は既にURLデコードされた "aaa bbb"となります。URLデコードされたRESTful APIパラメータはどこにありますか?

  • Iは同じAPIをテストするためにSpringBootベースのローカルテストオートメーションケース(どこにも展開されていない)を実行すると、コントローラ方法における「パラ」の値がなかった、しかしhttp://MY-TOMCAT-SERVER/SOME-PATH?para=aaa%20bbb

をGET URLデコードされました。

質問2つのシナリオの違いと、最初のシナリオで「パラ」URLデコードされた場所は何ですか?

答えて

0

がうまくいけば、私はあなたの質問の最初の部分のためのヒントを与えることができます。

をApache Tomcatにserver.xmlは、タグConnectorが含まれている、このタグはオプションの属性URIEncodingを持つことができます。例:

<Connector connectionTimeout="20000" 
      port="8080" 
      protocol="HTTP/1.1" 
      redirectPort="8443" 
      URIEncoding="UTF-8" /> 

私はTomcatがURIエンコーディングを担当していると思います。しかし、私はEmbedded-Spring-Boot-Tomcatでどのように起動されているのか分かりません。

+0

私はTomcatのserver.xmlで構成され、このような属性を見つけることができませんでした。 – yasi

+0

"指定されていない場合は、org.apache.catalina.STRICT_SERVLET_COMPLIANCEシステムプロパティがtrueに設定されている場合はISO-8859-1が使用されない限りUTF-8が使用されるため、" UTF-8 "ここでURLをデコードします。 – yasi

+0

私は実際のデフォルト動作を知らない。しかし、UTF-8エンコーディングを有効にするために、古いTomcatバージョンのUTF-8にこのプロパティを設定する必要があります。 – Ralph

関連する問題