[JAVA] Le contenu de useBodyEncodingForURI a-t-il changé par rapport à Tomcat8?

** Remarques sur la migration de Tomcat 7 vers Tomcat 8 **

Le contenu de useBodyEncodingForURI a-t-il changé par rapport à Tomcat8?

Lorsque le japonais était inclus dans le paramètre de requête de GET dans Tomcat7, les caractères étaient déformés. La plage d'influence était trop grande pour définir server.xml sur useBodyEncodingForURI = "true", donc Auparavant, les applications problématiques étaient corrigées individuellement, comme indiqué ci-dessous.

String param = new String(parameter.getBytes("ISO_8859_1"));

Cependant, à partir de Tomcat8, si le support ci-dessus est fourni, les caractères seront déformés et le support n'est plus nécessaire.

Tomcat7: http://tomcat.apache.org/tomcat-7.0-doc/config/ajp.html Tomcat8: http://tomcat.apache.org/tomcat-8.0-doc/config/ajp.html

En comparant les documents, l'explication de ʻURI Encoding` est différente.

Tomcat7

This specifies the character encoding used to decode the URI bytes, after %xx decoding the URL. If not specified, ISO-8859-1 will be used.

Spécifiez le codage URI du paramètre de requête au moment de GET. ** ISO-8859-1 ** est utilisé si URIEncoding n'est pas spécifié.

Tomcat8

This specifies the character encoding used to decode the URI bytes, after %xx decoding the URL. If not specified, UTF-8 will be used unless the org.apache.catalina.STRICT_SERVLET_COMPLIANCE system property is set to true in which case ISO-8859-1 will be used.

Spécifiez le codage URI du paramètre de requête au moment de GET. ** UTF-8 ** est utilisé si URIEncoding n'est pas spécifié. Cependant, si la propriété système org.apache.catalina.STRICT_SERVLET_COMPLIANCE est définie sur true, ** ISO-8859-1 ** sera utilisé.

Le comportement lorsque URIEncoding n'est pas spécifié a changé.

Correspondance

J'ai essayé de définir la propriété système ʻorg.apache.catalina.STRICT_SERVLET_COMPLIANCEsurtrue, mais ʻOrg.apache.catalina.STRICT_SERVLET_COMPLIANCE semble être une option pour éliminer la différence due au changement de version de Tomcat. Comme la plage d'influence est trop large, j'ai décidé de spécifier ʻISO-8859-1, qui est la valeur par défaut de Tomcat7, pour ʻURIEncoding.

conf/server.xml


<Connector port="8080" protocol="HTTP/1.1"
           redirectPort="8443"
           URIEncoding="ISO-8859-1" />

Recommended Posts

Le contenu de useBodyEncodingForURI a-t-il changé par rapport à Tomcat8?
[Rails 6] La durée de sauvegarde des images active_strage a été modifiée.
[Challenge CircleCI from 0] Apprenez les bases de CircleCI
L'histoire de RxJava souffrant de NoSuchElementException
Trouvez la différence à partir d'un multiple de 10
La date et l'heure de java8 ont été mises à jour
ArrayList et le rôle de l'interface vu depuis List
Format de la sortie du journal par Tomcat lui-même dans Tomcat 8
De l'introduction de la conception à la création de la table des utilisateurs
Préparer l'environnement d'exécution de Tomcat dans IntelliJ Community
Accédez au fichier war dans le répertoire racine de Tomcat
Volume 3 types de Docker Compose considérés à partir de l'objectif
Comment écrire Scala du point de vue de Java
À propos de l'utilité des monades dans une perspective orientée objet
Langage Java du point de vue de Kotlin et C #
Extraire un élément spécifique de la liste des objets
Comment télécharger une ancienne version d'Apache Tomcat
(Ruby on Rails6) Refléter le contenu publié à partir du formulaire
Un record d'étude du Spring Framework à partir de zéro