[JAVA] Hat sich der Inhalt von useBodyEncodingForURI von Tomcat8 geändert?

** Hinweise zur Migration von Tomcat 7 auf Tomcat 8 **

Hat sich der Inhalt von useBodyEncodingForURI von Tomcat8 geändert?

Als zum Zeitpunkt von Tomcat7 Japanisch in den Abfrageparameter von GET aufgenommen wurde, wurden die Zeichen verstümmelt. Der Einflussbereich war zu groß, um server.xml auf useBodyEncodingForURI = "true" zu setzen Zuvor wurden die problematischen Apps wie unten gezeigt einzeln behoben.

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

Ab Tomcat8 werden die Zeichen jedoch verstümmelt, wenn die oben genannte Unterstützung bereitgestellt wird, und die Unterstützung ist nicht mehr erforderlich.

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

Beim Vergleich der Dokumente ist die Erklärung von "URIEncoding" anders.

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.

Geben Sie die URI-Codierung des Anforderungsparameters zum Zeitpunkt von GET an. ** ISO-8859-1 ** wird verwendet, wenn keine URIEn-Codierung angegeben ist.

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.

Geben Sie die URI-Codierung des Anforderungsparameters zum Zeitpunkt von GET an. ** UTF-8 ** wird verwendet, wenn URIEncoding nicht angegeben ist. Wenn jedoch die Systemeigenschaft org.apache.catalina.STRICT_SERVLET_COMPLIANCE auf true gesetzt ist, wird ** ISO-8859-1 ** verwendet.

Das Verhalten, wenn URIEncoding nicht angegeben ist, hat sich geändert.

Korrespondenz

Ich habe versucht, die Systemeigenschaft "org.apache.catalina.STRICT_SERVLET_COMPLIANCE" auf "true" zu setzen, aber org.apache.catalina.STRICT_SERVLET_COMPLIANCE scheint eine Option zu sein, um den Unterschied aufgrund der Versionsänderung von Tomcat zu beseitigen. Da der Einflussbereich zu groß ist, habe ich beschlossen, "ISO-8859-1", die Standardeinstellung von Tomcat7, für "URIEncoding" anzugeben.

conf/server.xml


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

Recommended Posts

Hat sich der Inhalt von useBodyEncodingForURI von Tomcat8 geändert?
[Rails 6] Das Speicher-Timing von active_strage-Bildern wurde geändert.
[Herausforderung CircleCI von 0] Lernen Sie die Grundlagen von CircleCI
Die Geschichte von RxJava, das unter NoSuchElementException leidet
Finden Sie den Unterschied von einem Vielfachen von 10
Das Datum und die Uhrzeit von java8 wurden aktualisiert
ArrayList und die Rolle der Schnittstelle aus List
Format der Protokollausgabe von Tomcat selbst in Tomcat 8
Von der Einführung des Geräts bis zur Erstellung der Benutzertabelle
Bereiten Sie die Ausführungsumgebung von Tomcat in der IntelliJ Community vor
Greifen Sie auf die War-Datei im Stammverzeichnis von Tomcat zu
Band 3 Arten von Docker Compose aus dem Zweck betrachtet
Wie schreibe ich Scala aus der Perspektive von Java
Über die Nützlichkeit von Monaden aus einer objektorientierten Perspektive
Java-Sprache aus der Sicht von Kotlin und C #
Extrahieren Sie ein bestimmtes Element aus der Liste der Objekte
So laden Sie eine ältere Version von Apache Tomcat herunter
(Ruby on Rails6) Reflektiert den veröffentlichten Inhalt aus dem Formular
Eine Aufzeichnung über das Studium des Spring Framework von Grund auf neu