[
https://issues.apache.org/jira/browse/WICKET-2912?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12917811#action_12917811
]
Chris Colman commented on WICKET-2912:
--------------------------------------
I still haven't managed to get a minimal app that demonstrates this bug but
it's still happening every time with the main app. Here's the http logs. They
are identical for FF and IE up to a point:
Both FF and IE show these similar entries:
127.0.0.1 - - [05/Oct/2010:09:17:37 +1100] "GET
/?wicket:interface=:0:body:systemPanel:loginSubpanel:modalWindow:content:tabs:panel:signupBtn::IBehaviorListener:0:-1&random=0.882715671707312
HTTP/1.1" 200 541
127.0.0.1 - - [05/Oct/2010:09:17:37 +1100] "GET
/?wicket:interface=:0:body:systemPanel:loginSubpanel:modalWindow::IBehaviorListener:1:-1&random=0.7279478199762577
HTTP/1.1" 200 130
127.0.0.1 - - [05/Oct/2010:09:17:37 +1100] "GET / HTTP/1.1" 200 28222
127.0.0.1 - - [05/Oct/2010:09:17:37 +1100] "GET
/resources/org.apache.wicket.markup.html.WicketEventReference/wicket-event.js
HTTP/1.1" 200 2371
127.0.0.1 - - [05/Oct/2010:09:17:37 +1100] "GET
/resources/org.apache.wicket.ajax.WicketAjaxReference/wicket-ajax.js HTTP/1.1"
200 19800
127.0.0.1 - - [05/Oct/2010:09:17:37 +1100] "GET
/resources/org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow/res/modal.css
HTTP/1.1" 200 1398
127.0.0.1 - - [05/Oct/2010:09:17:37 +1100] "GET
/resources/org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow/res/modal.js
HTTP/1.1" 200 11533
127.0.0.1 - - [05/Oct/2010:09:17:37 +1100] "GET /swfobject.js HTTP/1.1" 200 6880
127.0.0.1 - - [05/Oct/2010:09:17:37 +1100] "GET /images/logo.png HTTP/1.1" 200
1707
127.0.0.1 - - [05/Oct/2010:09:17:40 +1100] "GET
/content/productCategory/o/76429/c/1406 HTTP/1.1" 200 30633
127.0.0.1 - - [05/Oct/2010:09:17:42 +1100] "GET
/?wicket:interface=:2:body:productCategoryPanel:items:0:prices:2:priceLink::IBehaviorListener:0:5&random=0.04588601021718497
HTTP/1.1" 200 6753
127.0.0.1 - - [05/Oct/2010:09:17:50 +1100] "GET
/?wicket:interface=:2:body:productCategoryPanel:cartWindow:content:checkoutBtn::IBehaviorListener:0:5&random=0.8917142698954278
HTTP/1.1" 200 541
127.0.0.1 - - [05/Oct/2010:09:17:50 +1100] "GET
/?wicket:interface=:2:body:productCategoryPanel:cartWindow::IBehaviorListener:1:5&random=0.22787581848448035
HTTP/1.1" 200 99
127.0.0.1 - - [05/Oct/2010:09:17:50 +1100] "GET
/content/checkout/o/76429/or/2286 HTTP/1.1" 302 -
127.0.0.1 - - [05/Oct/2010:09:17:50 +1100] "GET /?wicket:interface=:4::::
HTTP/1.1" 200 10693
127.0.0.1 - - [05/Oct/2010:09:17:57 +1100] "POST
/?wicket:interface=:4:body:addressFormPanel:form::IFormSubmitListener::
HTTP/1.1" 302 -
This must be an implicit 302 redirect because I don't explicitly perform any
302 redirects (that I know of). Maybe this is the redirect that occurs when a
trailing slash is left of a URL?
After this point IE throws a 400 error and no more HTTP activity is logged
whereas FF continues with the follow HTTP requests and displays the page
perfectly:
127.0.0.1 - - [05/Oct/2010:09:17:57 +1100] "GET
/content/checkout/o/76429/or/2286 HTTP/1.1" 200 28451
127.0.0.1 - - [05/Oct/2010:09:17:57 +1100] "GET /images/visa37.png HTTP/1.1"
304 -
127.0.0.1 - - [05/Oct/2010:09:17:57 +1100] "GET /images/mastercard37.png
HTTP/1.1" 304 -
127.0.0.1 - - [05/Oct/2010:09:17:57 +1100] "GET /images/amex37.png HTTP/1.1"
304 -
127.0.0.1 - - [05/Oct/2010:09:17:57 +1100] "GET /images/discover37.png
HTTP/1.1" 304 -
There is one thing that I noticed in my test app that exhibited different
behaviour between IE and FF:
When I use a servlet instead of a filter to 'catch' requests that have no path
via the welcome page mechanism (eg., www.abc.com instead of
www.abc.com/content/home etc.,) then I do see a difference. IE attempts to load
/favicon.ico and this causes a 404 crash because it's not there. When I use the
filter on /* instead - IE works fine.
<!-- redirects requests without any path component (ie '/') to the
appropriate URL -->
<servlet>
<servlet-name>redirector</servlet-name>
<servlet-class>com.mycompany.UrlRedirector</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>redirector</servlet-name>
<url-pattern>/redirectPureDomainName.jsp</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>redirectPureDomainName.jsp</welcome-file>
</welcome-file-list>
I might switch the app over to using a filter intead of a servlet for my
'redirector' function and see if that avoids the problem altogether.
> IE 8 gets 404 error after continueToOriginalDestination() when app is at root
> context
> -------------------------------------------------------------------------------------
>
> Key: WICKET-2912
> URL: https://issues.apache.org/jira/browse/WICKET-2912
> Project: Wicket
> Issue Type: Bug
> Components: wicket
> Affects Versions: 1.4.9
> Environment: Occurs on both Windows and Linux
> Running Tomcat 6
> JDK 1.6
> Reporter: Chris Colman
> Fix For: 1.4.13, 1.5-M3
>
> Attachments: myproject.rar
>
>
> After recommendation we recently switched wicket app from /content to /
> (root) context. App was working fine before but after switching to root
> context calls to continueToOriginalDestination give 404 errors in IE but
> continues to work perfectly in FireFox and Opera.
> Patch to fix the problem:
> I have provided a fix to PageMap's continueToOriginalDestination that fixes
> the problem on IE and continues to work fine on FireFox and Opera for all the
> tests I could throw at it.
> This patch breaks some unit tests - probably tests that the redirect occurs
> on the exact interceptContinuationURL that was originally provided, naturally
> after stripping off the leading '/' these would no longer work.
> This fix may cause problems when the web app is NOT in the root context but
> I'm not sure - they may be fine with this.
> public final boolean continueToOriginalDestination()
> {
> // Get request cycle
> final RequestCycle cycle = RequestCycle.get();
> // If there's a place to go to
> if (interceptContinuationURL != null)
> {
> >> ADDED if ( interceptContinuationURL.length() > 0 &&
> >> interceptContinuationURL.charAt(0) == '/' )
> >> ADDED interceptContinuationURL =
> >> interceptContinuationURL.substring(1);
> cycle.setRequestTarget(new
> RedirectRequestTarget(interceptContinuationURL));
> // Reset interception URL
> interceptContinuationURL = null;
> // Force session to replicate page maps
> dirty();
> return true;
> }
> return false;
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.