You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bi...@apache.org on 2002/10/04 09:03:09 UTC
cvs commit: jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat4 CoyoteResponse.java
billbarker 2002/10/04 00:03:09
Modified: coyote/src/java/org/apache/coyote/tomcat4
CoyoteResponse.java
Log:
Use Craig's URL class to from the redirect request.
This gives us normalisation as well as freeing us from unwanted protocols.
Revision Changes Path
1.27 +16 -42 jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat4/CoyoteResponse.java
Index: CoyoteResponse.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat4/CoyoteResponse.java,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- CoyoteResponse.java 4 Oct 2002 03:36:27 -0000 1.26
+++ CoyoteResponse.java 4 Oct 2002 07:03:08 -0000 1.27
@@ -1305,48 +1305,22 @@
if (location == null)
return (location);
- boolean leadingSlash = location.startsWith("/");
-
- if (leadingSlash
- || (!leadingSlash && (location.indexOf("://") == -1))) {
-
- redirectURLCC.recycle();
-
- String scheme = request.getScheme();
- String name = request.getServerName();
- int port = request.getServerPort();
-
+ // Construct a new absolute URL if possible (cribbed from
+ // the DefaultErrorPage servlet)
+ URL url = null;
+ try {
+ url = new URL(location);
+ } catch (MalformedURLException e1) {
+ HttpServletRequest hreq =
+ (HttpServletRequest) request.getRequest();
+ String requrl = request.getRequestURL().toString();
try {
- redirectURLCC.append(scheme, 0, scheme.length());
- redirectURLCC.append("://", 0, 3);
- redirectURLCC.append(name, 0, name.length());
- if ((scheme.equals("http") && port != 80)
- || (scheme.equals("https") && port != 443)) {
- redirectURLCC.append(':');
- String portS = port + "";
- redirectURLCC.append(portS, 0, portS.length());
- }
- if (!leadingSlash) {
- String relativePath = request.getDecodedRequestURI();
- int pos = relativePath.lastIndexOf('/');
- relativePath = relativePath.substring(0, pos);
- String encodedURI = urlEncoder.encodeURL(relativePath);
- redirectURLCC.append(encodedURI, 0, encodedURI.length());
- redirectURLCC.append('/');
- }
- redirectURLCC.append(location, 0, location.length());
- } catch (IOException e) {
+ url = new URL(new URL(requrl), location);
+ } catch (MalformedURLException e2) {
throw new IllegalArgumentException(location);
}
-
- return redirectURLCC.toString();
-
- } else {
-
- return (location);
-
}
-
+ return (url.toExternalForm());
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>