tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Phillip Qin <>
Subject RE: Location: redirection
Date Mon, 15 Nov 2004 20:59:45 GMT
The redirect has to be done in inner class CGIRunner of servlet CGIServlet.
Tomcat 4.1.30/5.0.28 do not handle redirect. You have to modify method run,
in while (isRunning) add your own handling. Our cgi scripts have "Status
302" for redirection, so I added header check below

                        if (line.startsWith("HTTP")) {
                            //TODO: should set status codes (NPH support)
                             * response.setStatus(getStatusCode(line));
                        } else if (line.indexOf(":") >= 0) {
                            String header =
                                line.substring(0, line.indexOf(":")).trim();
                            String value =
                                line.substring(line.indexOf(":") +
                        	// PQ: quick fix for 302 redirect
(header.trim().compareToIgnoreCase("STATUS")==0 && line.indexOf("302")>-1) {
                        		log("runCGI(my): status code=302");
                            } else {
                                response.addHeader(header , value);
(!value.toLowerCase().startsWith("text"))) {
                                    isBinaryContent = true;
                        } else {
                            log("runCGI: bad header line \"" + line + "\"");

I know it's ugly.

-----Original Message-----
From: Shapira, Yoav [] 
Sent: November 15, 2004 3:31 PM
To: Tomcat Users List
Subject: RE: Location: redirection


>We're using perl within tomcat 4.1.27. The perl scripts run all right, 
>but the redirections don't work at all.

Using an external mechanism (such as a CGI perl scripts in your case) for
redirection in Tomcat is tricky at best, and doomed to failure at worst.
The reason is that the script is not really part of the servlet
request/response pipeline.  Rather, it is invoked as an exec by a Tomcat
servlet (in your case, the CGI servlet that ships with Tomcat, I assume).  

That servlet can easily do a response redirect or request forward, but the
script cannot.

Accordingly, if you stick with the script at all, modify it to return the
redirection URL, and have the servlet (a custom extension to the CGI Servlet
that ships with Tomcat probably) read and act upon this URL by doing the


This e-mail, including any attachments, is a confidential business
communication, and may contain information that is confidential, proprietary
and/or privileged.  This e-mail is intended only for the individual(s) to
whom it is addressed, and may not be saved, copied, printed, disclosed or
used by anyone else.  If you are not the(an) intended recipient, please
immediately delete this e-mail from your computer system and notify the
sender.  Thank you.

To unsubscribe, e-mail:
For additional commands, e-mail:


  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message