2017-10-12 4 views
0

J'ai un serveur de jetons qui est configuré par programme. J'ai mis à jour de 9.3.7 à 9.4.7 et maintenant les chemins de contexte avec des espaces ne fonctionnent plus. Ainsi, servicePath = "/ Foo/Bar One Two" et les demandes ont des espaces de remplacement% 20 corrects. Mon journal affiche une requête "" GET // localhost: 8180/toto/titi% 20One% 20Two/foobar HTTP/1.1" ..Jetty 9.4 ServletContextHandler.setContextPath comportement ou Demande de modification de données

Mon serveur a deux servlets identiques avec la seule différence étant le chemin du contexte

?

Ce qui a changé Il pourrait être dans la façon dont le chemin de la ressource est présentée au servlet

Mon code spécifiant le chemin de contexte ressemble à:.

ServletHolder holder = new ServletHolder(...); 
ServletContextHandler handler = new ServletContextHandler(); 
handler.setContextPath(servicePath); 
handler.setVirtualHosts(connectors); 
handler.addServlet(holder, "/*"); 
contextHandlers.addHandler(handler); 

Alors maintenant demander org.eclipse.jetty.server .Request contient des informations sur l'URL codées lorsque ce n'était pas le cas.

  1. L'URL (originalURI) de la requête org.eclipse.jetty.server.Request est-elle garantie d'être entièrement codée, quoi qu'il en soit?
  2. Clearly ServletContextHandler.setContextPath() accepte les chemins non codés. Accepte-t-il les deux?

Merci

+0

Il semble que request.getContextPath() renvoie maintenant un chemin codé. Est-ce garanti? –

Répondre

0

j'ai déterminé que la jetée 9.4 a changé la façon request.getContextPath() répond. Il semble maintenant retourner un chemin codé. Remarque expérimentation montre ServletContextHandler.setContextPath() accepte un chemin non codé.