You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by rw...@apache.org on 2002/01/15 21:53:47 UTC

cvs commit: jakarta-commons/httpclient/src/test/org/apache/commons/httpclient TestWebappRedirect.java

rwaldhoff    02/01/15 12:53:47

  Modified:    httpclient/src/java/org/apache/commons/httpclient
                        HttpMethodBase.java
               httpclient/src/test-webapp/src/org/apache/commons/httpclient
                        RedirectServlet.java
               httpclient/src/test/org/apache/commons/httpclient
                        TestWebappRedirect.java
  Log:
  fix bug #5870 (http://nagoya.apache.org/bugzilla/show_bug.cgi?id=5870) by assuming same protocol/host/port for relative URLs in the Location header
  
  (had to change RedirectServlet to use setHeader directly to keep servlet engine from converting relative URLs for us)
  
  Revision  Changes    Path
  1.24      +17 -5     jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethodBase.java
  
  Index: HttpMethodBase.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethodBase.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- HttpMethodBase.java	15 Jan 2002 20:32:15 -0000	1.23
  +++ HttpMethodBase.java	15 Jan 2002 20:53:47 -0000	1.24
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethodBase.java,v 1.23 2002/01/15 20:32:15 rwaldhoff Exp $
  - * $Revision: 1.23 $
  - * $Date: 2002/01/15 20:32:15 $
  + * $Header: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethodBase.java,v 1.24 2002/01/15 20:53:47 rwaldhoff Exp $
  + * $Revision: 1.24 $
  + * $Date: 2002/01/15 20:53:47 $
    * ====================================================================
    *
    * The Apache Software License, Version 1.1
  @@ -109,7 +109,7 @@
    *
    * @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
    * @author Rodney Waldhoff
  - * @version $Revision: 1.23 $ $Date: 2002/01/15 20:32:15 $
  + * @version $Revision: 1.24 $ $Date: 2002/01/15 20:53:47 $
    */
   public abstract class HttpMethodBase implements HttpMethod {
   
  @@ -503,7 +503,19 @@
                       if(location != null) {
                           URL url = null;
                           try {
  -                            url = new URL(location.getValue());
  +                            if(location.getValue().startsWith("/")) {
  +                                if(log.isDebugEnabled()) {
  +                                    log.debug("Following relative Location header \"" + location + "\".");
  +                                }
  +                                String protocol = connection.isSecure() ? "https" : "http";
  +                                int port = connection.getPort();
  +                                if(-1 == port) {
  +                                    port = connection.isSecure() ? 443 : 80;
  +                                }
  +                                url = new URL(protocol,connection.getHost(),port,location.getValue());                                
  +                            } else {
  +                                url = new URL(location.getValue());
  +                            }                            
                           } catch(MalformedURLException e) {
                               log.error("Exception while parsing location header \"" + location + "\"",e);
                               throw new HttpException(e.toString());
  
  
  
  1.3       +5 -4      jakarta-commons/httpclient/src/test-webapp/src/org/apache/commons/httpclient/RedirectServlet.java
  
  Index: RedirectServlet.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/httpclient/src/test-webapp/src/org/apache/commons/httpclient/RedirectServlet.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- RedirectServlet.java	4 Oct 2001 17:49:14 -0000	1.2
  +++ RedirectServlet.java	15 Jan 2002 20:53:47 -0000	1.3
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-commons/httpclient/src/test-webapp/src/org/apache/commons/httpclient/RedirectServlet.java,v 1.2 2001/10/04 17:49:14 rwaldhoff Exp $
  - * $Revision: 1.2 $
  - * $Date: 2001/10/04 17:49:14 $
  + * $Header: /home/cvs/jakarta-commons/httpclient/src/test-webapp/src/org/apache/commons/httpclient/RedirectServlet.java,v 1.3 2002/01/15 20:53:47 rwaldhoff Exp $
  + * $Revision: 1.3 $
  + * $Date: 2002/01/15 20:53:47 $
    * ====================================================================
    *
    * The Apache Software License, Version 1.1
  @@ -78,7 +78,8 @@
           if(null == to) {
               to = "/";
           }
  -        response.sendRedirect(to);
  +        response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);
  +        response.setHeader("Location",to);
       }
   }
   
  
  
  
  1.3       +21 -4     jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestWebappRedirect.java
  
  Index: TestWebappRedirect.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestWebappRedirect.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TestWebappRedirect.java	4 Oct 2001 17:49:13 -0000	1.2
  +++ TestWebappRedirect.java	15 Jan 2002 20:53:47 -0000	1.3
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestWebappRedirect.java,v 1.2 2001/10/04 17:49:13 rwaldhoff Exp $
  - * $Revision: 1.2 $
  - * $Date: 2001/10/04 17:49:13 $
  + * $Header: /home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestWebappRedirect.java,v 1.3 2002/01/15 20:53:47 rwaldhoff Exp $
  + * $Revision: 1.3 $
  + * $Date: 2002/01/15 20:53:47 $
    * ====================================================================
    *
    * The Apache Software License, Version 1.1
  @@ -83,7 +83,7 @@
    * "httpclient.test.webappContext" property.
    *
    * @author Rodney Waldhoff
  - * @version $Id: TestWebappRedirect.java,v 1.2 2001/10/04 17:49:13 rwaldhoff Exp $
  + * @version $Id: TestWebappRedirect.java,v 1.3 2002/01/15 20:53:47 rwaldhoff Exp $
    */
   public class TestWebappRedirect extends TestWebappBase {
   
  @@ -108,6 +108,23 @@
           client.startSession(host, port);
           GetMethod method = new GetMethod("/" + context + "/redirect");
           method.setQueryString("to=" + URLEncoder.encode("http://" + host + ":" + port + "/" + context + "/params"));
  +        method.setUseDisk(false);
  +        try {
  +            client.executeMethod(method);
  +        } catch (Throwable t) {
  +            t.printStackTrace();
  +            fail("Unable to execute method : " + t.toString());
  +        }
  +        assertEquals(200,method.getStatusCode());
  +        assert(method.getResponseBodyAsString().indexOf("<title>Param Servlet: GET</title>") >= 0);
  +    }
  +
  +    // see http://nagoya.apache.org/bugzilla/show_bug.cgi?id=5870
  +    public void testRelativeRedirect() throws Exception {
  +        HttpClient client = new HttpClient();
  +        client.startSession(host, port);
  +        GetMethod method = new GetMethod("/" + context + "/redirect");
  +        method.setQueryString("to=" + URLEncoder.encode("/" + context + "/params"));
           method.setUseDisk(false);
           try {
               client.executeMethod(method);
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>