2017-10-12 14 views
0

프로그래밍 방식으로 구성된 갑티 서버가 있습니다. 9.3.7에서 9.4.7로 업그레이드했는데 이제 공백이있는 컨텍스트 경로가 더 이상 작동하지 않습니다.부두 9.4 ServletContextHandler.setContextPath 동작 또는 요청 데이터 변경

그래서 servicePath = "/ Foo/Bar One Two"이고 요청에는 적절한 % 20 대체 공백이 있습니다. ..

내 서버 유일한 차이점은 컨텍스트 경로 인 두 개의 동일한 서블릿을 가지고

: 내 로그 요청 ""8180/푸/바 % 20One % 20Two /는 foobar HTTP/1.1 // 로컬 호스트를 GET "을 보여줍니다 ? 변경 무엇

이 자원 경로가 서블릿에 표시되는 방법이 될 수

컨텍스트 경로를 지정 내 코드는 모양처럼 :.

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. URL (originalURI)은 요청에 따라 org.eclipse.jetty.server.Request가 완전히 인코딩되도록 보장되어 있습니까?
  2. 분명히 ServletContextHandler.setContextPath()는 인코딩되지 않은 경로를 허용합니다. 둘 다 받아 들일 수 있습니까?

감사

+0

request.getContextPath()가 인코딩 된 경로를 반환하는 것처럼 보입니다. 이게 보장 되나요? –

답변

0

나는 응답) (부두 9.4 방식 request.getContextPath를 변경할 것을 결정했다. 이제 인코딩 된 경로가 반환됩니다.

참고 실험에 따르면 ServletContextHandler.setContextPath()는 인코딩되지 않은 경로를 허용합니다.