https://issues.apache.org/bugzilla/show_bug.cgi?id=56876
Bug ID: 56876 Summary: sendRedirect address wrong at port mapping or proxied . Product: Tomcat 6 Version: unspecified Hardware: All OS: All Status: NEW Severity: critical Priority: P2 Component: Catalina Assignee: dev@tomcat.apache.org Reporter: pi...@trydone.com sendRedirect address wrong at port mapping or proxied . eg: http://www.domaintest.com/ maping to: http://192.168.1.123:8080/ index.jsp code: <% response.sendRedirect("/abc.jsp"); %> when enter http://www.domaintest.com/ out put header for Location: Location: http://192.168.1.123:8080/abc.jsp is not http://www.domainttest/abc.jsp found tomcatcode at org.apache.catalina.connector.Response#toAbsolute code: private String toAbsolute(String location) { if (location == null) return (location); boolean leadingSlash = location.startsWith("/"); if (leadingSlash || !hasScheme(location)) { redirectURLCC.recycle(); String scheme = request.getScheme(); String name = request.getServerName(); //## bug at here !!!!!! ,can use host header . int port = request.getServerPort(); 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 = null; final String frelativePath = relativePath; if (SecurityUtil.isPackageProtectionEnabled() ){ try{ encodedURI = (String)AccessController.doPrivileged( new PrivilegedExceptionAction(){ public Object run() throws IOException{ return urlEncoder.encodeURL(frelativePath); } }); } catch (PrivilegedActionException pae){ IllegalArgumentException iae = new IllegalArgumentException(location); iae.initCause(pae.getException()); throw iae; } } else { encodedURI = urlEncoder.encodeURL(relativePath); } redirectURLCC.append(encodedURI, 0, encodedURI.length()); redirectURLCC.append('/'); } redirectURLCC.append(location, 0, location.length()); } catch (IOException e) { IllegalArgumentException iae = new IllegalArgumentException(location); iae.initCause(e); throw iae; } return redirectURLCC.toString(); } else { return (location); } } -- You are receiving this mail because: You are the assignee for the bug. --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org