[
https://issues.apache.org/jira/browse/WICKET-3258?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13453255#comment-13453255
]
Jeremy Thomerson commented on WICKET-3258:
------------------------------------------
[~oscar.huarte] - I fixed this while on-site for a customer that used WAS. I
don't use it personally. Since it was nearly two years ago, I don't remember
all the details, but I think that the description above and the comments in the
code commited is quite thorough. See
https://fisheye6.atlassian.com/changelog/wicket?cs=1050204 for more information
on how to override the default Wicket behavior to send an absolute URL redirect
instead of relative, thus negating the poor calculation of a relative URL by
WAS.
> Allow for non-relative redirects for buggy servlet containers
> -------------------------------------------------------------
>
> Key: WICKET-3258
> URL: https://issues.apache.org/jira/browse/WICKET-3258
> Project: Wicket
> Issue Type: Improvement
> Components: wicket
> Affects Versions: 1.4.14, 1.5-M3
> Environment: Websphere
> Reporter: Jeremy Thomerson
> Assignee: Jeremy Thomerson
> Priority: Minor
> Fix For: 1.4.18, 1.5.0
>
> Attachments: relativeurlproblem.tar.gz
>
>
> There appears to be a bug in the way WebSphere handles relative URLs. The
> servlet spec
> (http://jcp.org/aboutJava/communityprocess/final/jsr154/index.html), page 260
> specifies the behavior for relative URLs, which Wicket uses, but WebSphere
> appears to ignore. If we send a relative URL like "../../Something.html" to
> HttpServletResponse#sendRedirect, the relative path should be relative *to
> the requested URI* (the page I was requesting that resulted in the redirect).
> WebSphere isn't implementing this behavior correctly. Instead, it appears
> to interpret it as relative *to the app context and servlet mapping*.
>
> More details:
>
> We request a page like:
> http://[server]:[serverport]/[appcontext]/[servletmapping]/somefolder/someotherfolder/foo.html
>
> That page results in an error, and Wicket tries to redirect to an unmounted
> bookmarkable page by doing
> sendRedirect("../../?wicket:bookmarkablePage=:com.FooPage"). This is correct
> according to the servlet spec, because the url passed to sendRedirect should
> be relative *to the requested URI* (<--- this is the key). So, we expect the
> container to redirect to
> http://[server]:[serverport]/[appcontext]/[servletmapping]/?wicket:bookmarkable=com.FooPage
> . Jetty does (and Tomcat and others). But, WebSphere does not.
>
> Although I cannot look at the Websphere code, I suspect that it is
> interpreting this relative URL as being relative to the root of the servlet
> mapping. It is then removing two folders, which takes us back to the server
> root (instead of the servlet mapping, like it should), removing the app
> context and servlet mapping (i.e.
> http://[server]:[serverport]/?wicket:bookmarkable=com.FooPage) This is
> obviously incorrect.
>
> We have tried this compatibility setting (true and false), but it didn't
> work:
> https://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.nd.doc/info/ae/ae/xrun_jvm_sendredirect.html
>
> There are a lot of reports about the problem:
> http://www.mail-archive.com/[email protected]/msg68864.html
> https://issues.apache.org/jira/browse/STR-1843?page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel
> http://www.mail-archive.com/[email protected]/msg06308.html
> Although we obviously can't fix the issue, we should provide a way for users
> of these servlet containers to redirect to an absolute URL rather than a
> relative URL.
--
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