Hi Martin, I've found something that could be related, at this line below, a new Url instance is created without being configured with the protocol. Is this URL relative or absolute?
https://github.com/apache/wicket/blob/9e42a9548adb0da540e4e87d491f5824e778537e/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PageInstanceMapper.java#L129 I'll will try to debug the code later. Thanks. On Mon, May 15, 2017 at 3:56 AM, Martin Grigorov <[email protected]> wrote: > Hi, > > Put a breakpoint at org.apache.wicket.request.Url#getProtocol() and see > what it returns. > I guess the redirect is an absolute url and that's why it breaks. > See org.apache.wicket.protocol.http.servlet.ServletWebResponse# > sendRedirect > > Martin Grigorov > Wicket Training and Consulting > https://twitter.com/mtgrigorov > > On Mon, May 15, 2017 at 5:01 AM, Marcel Barbosa Pinto < > [email protected]> wrote: > > > Hi, > > > > I am using a balancer which sends the X-Forwarded-Proto header to my > Wicket > > application. > > > > I`ve added the following filters: > > > > getFilterFactoryManager() > > > .addSecuredRemoteAddressRequestWrapperFactory(null) > > > .addXForwardedRequestWrapperFactory(null); > > > > > > > And the HttpsMapper: > > > > setRootRequestMapper(new HttpsMapper(getRootRequestMapper(), new > > > HttpsConfig()) > > > > > > > > > And the following init-param into web.xml > > > > <init-param> > > > <param-name>protocolHeader</param-name> > > > <param-value>X-Forwarded-Proto</param-value> > > > </init-param> > > > > > > > > > When I debug I can see that the header is working inside a > > RequestCycleListener > > > > HttpServletRequest req = (HttpServletRequest) > > > cycle.getRequest().getContainerRequest(); > > > System.out.println("-->" + req.getScheme() + " ==" + > > > req.getHeader("X-Forwarded-Proto"); > > > > > > > > > The problem occurs when some versioned page is created and wicket > redirect > > it to the same URL but with the HTTP:// instead, for example: > > > > *https://*www.wicket.com/statefullPage > > -> Response header: 302 (Location: *http://*www.wicket.com/ > > statefullPage*?1* > > ) > > > > If I change it back to HTTPS it works: > > > > *https://*www.wicket.com/statefullPage > > *?1* > > *-> *Response 200 OK > > > > I believe that in some redirection logic the original schema is being > lost > > somehow, during page versioning. > > This problem only occurs when using the "X-Forwarded-Proto" header > > > > Using Wicket 7.6.0 > > Any suggestions? > > > > Thanks! > > > -- Marcel Barbosa Pinto 55 11 98255 8288
