[ http://issues.apache.org/jira/browse/TAPESTRY-786?page=all ]
     
Howard M. Lewis Ship resolved TAPESTRY-786:
-------------------------------------------

    Resolution: Invalid
     Assign To: Howard M. Lewis Ship

This is what the request decodere extension point is for; it can provide the 
real server name and port to use, when the values returned by the Servlet API 
are incorrect, due to the presense of a firewall.

> wrong rendering of links when changing scheme binding
> -----------------------------------------------------
>
>          Key: TAPESTRY-786
>          URL: http://issues.apache.org/jira/browse/TAPESTRY-786
>      Project: Tapestry
>         Type: Bug
>   Components: Framework
>  Environment: Tapestry 4b13, Tomcat, Apache
>     Reporter: Gerald Schoeffel
>     Assignee: Howard M. Lewis Ship

>
> When a page is rendered after changing the scheme binding, every link on that 
> page contains 'wrong' portnumbers.
> Example:
> My local server (Tomcat) ist running on port 8080, https is listening on
> port 8443.
> In the border-component there is the following definition:
>     <component id="loginpage" type="PageLink">
>           <binding name="page" value="'Login'"/>
>           <binding name="scheme" value="'https'"/>
>     </component>
> The generated link looks like https://localhost:8080/... .
> When using a proxy server (Apache 2.x) to get requests to port 80 forwarded
> to my container, having https on port 443, the generated link is
> https://mydomain:80/.... :(
> When fixing the port-part of the link and entering this in the browser, the 
> page is rendered with all inks on it containing https :( 
> Links having scheme bound to 'http' are rendered with the wrong port-number 
> (now the https-port). So there is no way back :(
> With the help of Kent Tong (tapestry mailing list) I could implement a 
> workaround:
>      protected String constructURL(ILinkComponent component, IRequestCycle
> cycle) {
>           ILink link = component.getLink(cycle) ;
>           String scheme = component.getScheme() ;
>           String anchor = component.getAnchor() ;
>           WebRequest request = cycle.getInfrastructure().getRequest() ;
>           int httpsPort = request.getServerPort() == 80 ? 443 : 8443 ;
>           int httpPort = ((request.getServerPort() == 8443) ||
> (request.getServerName().equalsIgnoreCase("localhost"))) ? 8080 : 80 ;
>           if ((null != scheme) && scheme.equalsIgnoreCase("https"))
>                return link.getURL(scheme, null, httpsPort, anchor, true) ;
>           return link.getURL("http", null, httpPort, anchor, true) ;
>      }
> }
> Binding this LinkRenderer as the render in PageLink etc. components will work 
> - but static links, hardcoded on the page will be rendered wrong.
> Would be great to get this fixed and/or improved to enter and leave different 
> schemes easier.
> Thank you in advance !
> Gerald

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to