You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2013/04/08 13:05:33 UTC
git commit: WICKET-5131 Problems with cookies disabled when using
301/302 and also 303 (even with cookies)
Updated Branches:
refs/heads/master 6dd0fe21b -> 4b7367ef2
WICKET-5131 Problems with cookies disabled when using 301/302 and also 303 (even with cookies)
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/4b7367ef
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/4b7367ef
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/4b7367ef
Branch: refs/heads/master
Commit: 4b7367ef2dd030d988cb0e8c9cdac8b7b699c565
Parents: 6dd0fe2
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Mon Apr 8 14:05:13 2013 +0300
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Mon Apr 8 14:05:13 2013 +0300
----------------------------------------------------------------------
.../http/handler/RedirectRequestHandler.java | 15 ++++++----
.../http/handler/RedirectRequestHandlerTest.java | 20 +++++++++++++++
2 files changed, 29 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/4b7367ef/wicket-request/src/main/java/org/apache/wicket/request/http/handler/RedirectRequestHandler.java
----------------------------------------------------------------------
diff --git a/wicket-request/src/main/java/org/apache/wicket/request/http/handler/RedirectRequestHandler.java b/wicket-request/src/main/java/org/apache/wicket/request/http/handler/RedirectRequestHandler.java
index e21856f..13c99fa 100644
--- a/wicket-request/src/main/java/org/apache/wicket/request/http/handler/RedirectRequestHandler.java
+++ b/wicket-request/src/main/java/org/apache/wicket/request/http/handler/RedirectRequestHandler.java
@@ -59,9 +59,10 @@ public class RedirectRequestHandler implements IRequestHandler
public RedirectRequestHandler(final String redirectUrl, final int status)
{
if ((status != HttpServletResponse.SC_MOVED_PERMANENTLY) &&
- (status != HttpServletResponse.SC_MOVED_TEMPORARILY))
+ (status != HttpServletResponse.SC_MOVED_TEMPORARILY) &&
+ (status != HttpServletResponse.SC_SEE_OTHER))
{
- throw new IllegalStateException("Status must be either 301 or 302, but was: " + status);
+ throw new IllegalStateException("Status must be either 301, 302 or 303, but was: " + status);
}
this.redirectUrl = redirectUrl;
this.status = status;
@@ -93,17 +94,19 @@ public class RedirectRequestHandler implements IRequestHandler
{
final String location;
- if (redirectUrl.startsWith("/"))
+ final String url = getRedirectUrl();
+
+ if (url.charAt(0) == '/')
{
// context-absolute url
- location = requestCycle.getUrlRenderer().renderContextRelativeUrl(redirectUrl);
+ location = requestCycle.getUrlRenderer().renderContextRelativeUrl(url);
}
else
{
// if relative url, servlet container will translate to absolute as
// per the servlet spec
// if absolute url still do the same
- location = redirectUrl;
+ location = url;
}
WebResponse response = (WebResponse)requestCycle.getResponse();
@@ -114,7 +117,7 @@ public class RedirectRequestHandler implements IRequestHandler
}
else
{
- response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
+ response.setStatus(status);
response.setHeader("Location", location);
}
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/4b7367ef/wicket-request/src/test/java/org/apache/wicket/request/http/handler/RedirectRequestHandlerTest.java
----------------------------------------------------------------------
diff --git a/wicket-request/src/test/java/org/apache/wicket/request/http/handler/RedirectRequestHandlerTest.java b/wicket-request/src/test/java/org/apache/wicket/request/http/handler/RedirectRequestHandlerTest.java
index 3e76a1f..d6239dc 100644
--- a/wicket-request/src/test/java/org/apache/wicket/request/http/handler/RedirectRequestHandlerTest.java
+++ b/wicket-request/src/test/java/org/apache/wicket/request/http/handler/RedirectRequestHandlerTest.java
@@ -69,4 +69,24 @@ public class RedirectRequestHandlerTest
Mockito.verify(webResponse).sendRedirect(REDIRECT_URL);
}
+
+ /**
+ * https://issues.apache.org/jira/browse/WICKET-5131
+ */
+ @Test
+ public void seeOtherShouldSetLocationHeader()
+ {
+ RedirectRequestHandler handler = new RedirectRequestHandler(REDIRECT_URL,
+ HttpServletResponse.SC_SEE_OTHER);
+
+ IRequestCycle requestCycle = Mockito.mock(IRequestCycle.class);
+ WebResponse webResponse = Mockito.mock(WebResponse.class);
+
+ Mockito.when(requestCycle.getResponse()).thenReturn(webResponse);
+
+ handler.respond(requestCycle);
+
+ Mockito.verify(webResponse).setStatus(HttpServletResponse.SC_SEE_OTHER);
+ Mockito.verify(webResponse).setHeader("Location", REDIRECT_URL);
+ }
}