Ich habe einen Anlegestegserver, der programmgesteuert konfiguriert ist. Ich habe ein Upgrade von 9.3.7 auf 9.4.7 durchgeführt und jetzt funktionieren Kontextpfade mit Leerzeichen nicht mehr.Anlegestelle 9.4 ServletContextHandler.setContextPath-Verhalten oder Anforderungsdaten ändern
So ServicePath = "/ Foo/Bar One Two" und Anforderungen haben richtige% 20 Leerzeichen ersetzen. Mein Protokoll zeigt eine Anfrage "" GET // localhost: 8180/foo/bar% 20One% 20Two/foobar HTTP/1.1" ..
Mein Server hat zwei identische Servlets mit dem einzigen Unterschied, der Kontextpfad
?Was hat sich geändert Es könnte in der Art und Weise sein, die Ressource Pfad zum Servlet präsentiert
Mein Code den Kontextpfad Angabe wie folgt aussieht:.
ServletHolder holder = new ServletHolder(...);
ServletContextHandler handler = new ServletContextHandler();
handler.setContextPath(servicePath);
handler.setVirtualHosts(connectors);
handler.addServlet(holder, "/*");
contextHandlers.addHandler(handler);
So fordern jetzt org.eclipse.jetty.server .Request hat URL-Informationen, die codiert sind, wenn sie vorher nicht vorhanden waren.
- Ist die URL (originalURI) in Anforderung org.eclipse.jetty.server.Request garantiert vollständig codiert, egal was?
- Offensichtlich akzeptiert ServletContextHandler.setContextPath() uncodierte Pfade. Akzeptiert es beides?
Dank
Es sieht aus wie request.getContextPath() gibt jetzt einen codierten Pfad zurück. Ist das garantiert? –