2017-10-12 61 views
0

我有一個以編程方式配置的碼頭服務器。我從9.3.7升級到9.4.7,現在使用空格的上下文路徑不再起作用。Jetty 9.4 ServletContextHandler.setContextPath行爲或請求數據更改

因此servicePath =「/ Foo/Bar One Two」,並且請求有適當的%20替換空格。我的日誌顯示的請求 「」 GET //本地主機:8180 /富/酒吧%20One%20Two/foobar的HTTP/1.1" 。

我的服務器具有唯一的區別是上下文路徑的兩個相同的servlet

發生了什麼變化這可能是在資源路徑呈現給servlet的方式

我的代碼指定上下文路徑是這樣的:。

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

所以現在要求org.eclipse.jetty.server .Request的URL信息在不是之前編碼。

  1. 請求org.eclipse.jetty.server.Request中的URL(originalURI)是否保證完全編碼?
  2. 顯然ServletContextHandler.setContextPath()接受未編碼的路徑。它是否同時接受?

感謝

+0

它看起來像request.getContextPath()現在返回一個編碼路徑。這是有保證的嗎? –

回答

0

我確定碼頭9.4改變了request.getContextPath方式()響應。它現在似乎返回一個編碼路徑。

注意實驗顯示ServletContextHandler.setContextPath()接受未編碼的路徑。