私はプログラムで設定されたjettyサーバーを持っています。私は9.3.7から9.4.7にアップグレードしましたが、スペースを含むコンテキストパスはもはや機能しません。Jetty 9.4 ServletContextHandler.setContextPathの動作またはリクエストデータの変更
したがって、servicePath = "/ Foo/Bar One Two"と要求には%20の置換スペースがあります。私のログには、要求 "を示しています。" // localhostをGET:8180 /フー/バーを%20One%20Two/foobarにHTTP/1.1" を
私のサーバーは、唯一の違いは、コンテキスト・パスという2つの同一のサーブレットがあり
。だから今org.eclipse.jetty.serverを要求ServletHolder holder = new ServletHolder(...);
ServletContextHandler handler = new ServletContextHandler();
handler.setContextPath(servicePath);
handler.setVirtualHosts(connectors);
handler.addServlet(holder, "/*");
contextHandlers.addHandler(handler);
:?。コンテキストパスを指定する私のコードがどのように見えるか変更されたことがリソースパスがサーブレットに提示された方法で可能性があり
.Requestには以前にないときにエンコードされたURL情報があります。
- 要求元のURL(originalURI)は、org.eclipse.jetty.server.Requestが完全にエンコードされていることが保証されていますか?
- 明らかに、ServletContextHandler.setContextPath()は、エンコードされていないパスを受け入れます。それは両方を受け入れますか?
おかげ
request.getContextPath()がエンコードされたパスを返すように見えます。これは保証されていますか? –