DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=20361>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=20361

Redirection responses sent on localized OS for Japanese and French are improperly 
formatted

           Summary: Redirection responses sent on localized OS for Japanese
                    and French are improperly formatted
           Product: Tomcat 3
           Version: 3.3.1 Final
          Platform: All
        OS/Version: Other
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Unknown
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


When performing a redirection response

 response.sendRedirect(response.encodeRedirectURL(<myurl>));

in a Tomcat instance running on a localized Japanese or French OS the 
redirection response sent to the browser can be incorrectly encoded or have the 
encoding misidentified.

The Tomcat ErrorHandler class explicitly sets the ContentType to be "text/html" 
for redirections.  This causes the ContentType header to be "text/html".  
However the response itself can contain multibyte data taken from the Japanese 
and French resource files distibuted with Tomcat.  The following section of 
code shows how these resource files are used to construct a response based upon 
the default locale of the JVM:

>From ErrorHandler.java

        res.setContentType("text/html");        // ISO-8859-1 default
        res.setHeader("Location", location);

        if( sbNote==0 ) {
            sbNote=req.getContextManager().getNoteId
(ContextManager.REQUEST_NOTE,
                                                     "RedirectHandler.buff");
        }

        // we can recycle it because
        // we don't call toString();
        StringBuffer buf=(StringBuffer)req.getNote( sbNote );
        if( buf==null ) {
            buf = new StringBuffer();
            req.setNote( sbNote, buf );
        }
        buf.append("<html><head><title>").
            append(sm.getString("defaulterrorpage.documentmoved")).
            append("</title></head>\r\n<body><h1>").
            append(sm.getString("defaulterrorpage.documentmoved")).
            append("</h1>\r\n").
            append(sm.getString("defaulterrorpage.thisdocumenthasmoved")).
            append(" <a href=\"").
            append( HttpMessages.filter( location ) ).
            append("\">here</a>.<p>\r\n</body>\r\n</html>");

        res.setContentLength(buf.length());
        res.getBuffer().write( buf );
        res.getBuffer().close();
        buf.setLength(0);

If the encoding has been specified earlier in the JSP using a page directive:

<[EMAIL PROTECTED] contentType="text/html; charset=utf-8"%>

the encoding of the redirection response will be the charset specified in the 
page directive even though the response header indicates otherwise.  On some 
browsers this disagreement between specified encoding and actual encoding can 
cause the browser to hang and not be redirected (seen on IE 6 - strangely only 
when the redirection url is sufficiently long).

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to