From 594043b57c5170fc12924732912c6f6e8ff9448c Mon Sep 17 00:00:00 2001 From: markt Date: Mon, 10 Oct 2011 12:10:53 +0000 Subject: [PATCH] Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=51972 Add support for handling scheme/protocol relative URLs for redirects git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1180907 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/catalina/connector/Response.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/java/org/apache/catalina/connector/Response.java b/java/org/apache/catalina/connector/Response.java index d434f6614..014d8e136 100644 --- a/java/org/apache/catalina/connector/Response.java +++ b/java/org/apache/catalina/connector/Response.java @@ -1591,7 +1591,24 @@ public class Response boolean leadingSlash = location.startsWith("/"); - if (leadingSlash || !hasScheme(location)) { + if (location.startsWith("//")) { + // Scheme relative + redirectURLCC.recycle(); + // Add the scheme + String scheme = request.getScheme(); + try { + redirectURLCC.append(scheme, 0, scheme.length()); + redirectURLCC.append(':'); + redirectURLCC.append(location, 0, location.length()); + return redirectURLCC.toString(); + } catch (IOException e) { + IllegalArgumentException iae = + new IllegalArgumentException(location); + iae.initCause(e); + throw iae; + } + + } else if (leadingSlash || !hasScheme(location)) { redirectURLCC.recycle(); -- 2.11.0