2017-05-16 1 views
4

Ich habe noch nie Tomcat verwendet, aber ich habe kürzlich ein JSP-Projekt geerbt und jetzt muss ich es zum Laufen bringen. Ich habe Tomcat 8.0 lokal in Eclipse installiert und alles funktioniert gut. Ich habe auch Tomcat 8.0 auf einem Ubuntu VPS installiert. Die App läuft gut, abgesehen von einem kleinen Problem mit der Handhabung von URLs.Wie kann ich Tomcat dazu bringen, nicht-eckige Klammern in URLs zu akzeptieren?

Die clientseitige Anwendung erzeugt URLs mit unescaped Platz und geschweiften Klammern in den Parametern, wie folgt aus:

GET /saveItems.json?items=[{%22json%22:%22here%22}] 

So viel wie ich möchte die clientseitige Anwendung ändern, ich kann es nicht. Ich muss nur dieses Backend laufen lassen.

Meine lokale Kopie der Anwendung behandelt das gut. Auf dem Server, jedoch bekomme ich diesen Fehler:

java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986 
    at org.apache.coyote.http11.AbstractNioInputBuffer.parseRequestLine(AbstractNioInputBuffer.java:286) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1504) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1460) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:748) 

Ich habe für eine Einstellung suchen, dies ohne Glück beeinflussen könnte. Was fehlt mir hier?

Antwort

3

Tomcat 8.0.39/8.5.9/7.0.73 fügen Sie zusätzliche Prüfungen für gültige Zeichen zum Parsen der HTTP-Anforderungszeile hinzu. Gemäß this requirement, version 8.0.42/8.5.12/7.0.76 einige Änderungen vornehmen, um einige ungültige Zeichen zuzulassen.
{, } und | sind zulässig, wenn das Zeichen im Wert der Systemeigenschaft tomcat.util.http.parser.HttpParser.requestTargetAllow vorhanden ist.

Sie können die Systemeigenschaft tomcat.util.http.parser.HttpParser.requestTargetAllow={} hinzufügen, um diesen Fehler zu vermeiden. Eine der Lösungen bearbeitet $CATALINA_HOME\conf\catalina.properties.

Verwandte Themen