[ 
https://issues.apache.org/jira/browse/WICKET-5000?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13577790#comment-13577790
 ] 

Tim Urberg edited comment on WICKET-5000 at 2/13/13 6:13 PM:
-------------------------------------------------------------

I've been doing a little debugging and found this to be the main problem in 
HttpsMapper:

final Url mapHandler(IRequestHandler handler, Request request)
        {
                Url url = delegate.mapHandler(handler);

                Scheme desired = getDesiredSchemeFor(handler);
                Scheme current = getSchemeOf(request);
                if (!desired.isCompatibleWith(current))
                {
                        // the generated url does not have the correct scheme, 
set it (which in turn will cause
                        // the url to be rendered in its full representation)
                        url.setProtocol(desired.urlName());
                        url.setPort(desired.getPort(config));
                }
                return url;
        }

If I comment out url.setProtocol and url.setPort it loads the page at least 
with the right url, but still in http.  I can then override createRedirectUrl, 
but that only gets called sometimes.  I'm assuming it has to do with the 
comment there about how the url is rendered in its full representation.  So the 
question is, where does that happen?  I wasn't able to find it debugging yet.

Thanks for your help and your time!
                
      was (Author: tim273):
    I've been doing a little debugging and found this to be the main problem in 
HttpsMapper:

final Url createRedirectUrl(IRequestHandler handler, Request request)
        {
                Url url = delegate.mapHandler(handler);

                Scheme desired = getDesiredSchemeFor(handler);
                Scheme current = getSchemeOf(request);
                if (!desired.isCompatibleWith(current))
                {
                        // the generated url does not have the correct scheme, 
set it (which in turn will cause
                        // the url to be rendered in its full representation)
                        url.setProtocol(desired.urlName());
                        url.setPort(desired.getPort(config));
                }
                return url;
        }

If I comment out url.setProtocol and url.setPort it loads the page at least 
with the right url, but still in http.  I can then override createRedirectUrl, 
but that only gets called sometimes.  I'm assuming it has to do with the 
comment there about how the url is rendered in its full representation.  So the 
question is, where does that happen?  I wasn't able to find it debugging yet.

Thanks for your help and your time!
                  
> HttpsMapper Appends Context Root when Behind Apache Proxy
> ---------------------------------------------------------
>
>                 Key: WICKET-5000
>                 URL: https://issues.apache.org/jira/browse/WICKET-5000
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 6.5.0
>         Environment: Ubuntu 12.04 and Mac OS X Mountain Lion
>            Reporter: Tim Urberg
>            Priority: Minor
>         Attachments: myproject.zip
>
>
> I have a Wicket app running Wicket 6.5.0 which uses HttpsMapper to switch to 
> HTTPS for a login page and on another page.  The app is deployed in Weblogic 
> version 10.3.5.0 with a context root of /documentation.  Weblogic sits behind 
> an Apache HTTP server which uses the Weblogic HTTP Server plugin 
> (http://docs.oracle.com/cd/E13222_01/wls/docs81/plugins/apache.html#120648) 
> and set up like this:
> <VirtualHost *:80>
>       WebLogicHost 10.0.2.2
>       WebLogicPort 7011
>       
>       SetHandler weblogic-handler
>       PathPrepend /documentation
>       ErrorLog ${APACHE_LOG_DIR}/error.log
>       # Possible values include: debug, info, notice, warn, error, crit,
>       # alert, emerg.
>       LogLevel info
>       CustomLog ${APACHE_LOG_DIR}/access.log combined
> </VirtualHost>
> <IfModule mod_ssl.c>
> <VirtualHost _default_:443>
>       WebLogicHost 10.0.2.2
>       WebLogicPort 7011
>       ErrorLog ${APACHE_LOG_DIR}/ssl_error.log
>       SetHandler weblogic-handler
>       PathPrepend /documentation
>       WLProxySSL ON
>       SecureProxy ON
>       # Possible values include: debug, info, notice, warn, error, crit,
>       # alert, emerg.
>       LogLevel info
>       CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
>       SSLEngine on
>       SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
>       SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
> </VirtualHost>
> </IfModule>
> I have tried overriding HttpsMapper#createRedirectUrl to remove 
> /documentation from the URL, but it only works if I go directly to the page 
> that is annotated with @RequireHTTPS.  While debugging I discovered that the 
> above method doesn't get called if a link is clicked or if 
> RestartResponseAtInterceptPageException is used (with wicket-auth-roles).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to