[ https://issues.apache.org/jira/browse/WICKET-3258?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12972309#action_12972309 ]
Hudson commented on WICKET-3258: -------------------------------- Integrated in Apache Wicket 1.4.x #336 (See [https://hudson.apache.org/hudson/job/Apache%20Wicket%201.4.x/336/]) > 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 > 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/tomcat-user@jakarta.apache.org/msg68864.html > https://issues.apache.org/jira/browse/STR-1843?page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel > http://www.mail-archive.com/struts-dev@jakarta.apache.org/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. - You can reply to this email to add a comment to the issue online.