https://bz.apache.org/bugzilla/show_bug.cgi?id=62471

            Bug ID: 62471
           Summary: Cannot set status code if Servlet is used as error
                    page
           Product: Tomcat 9
           Version: 9.0.6
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Catalina
          Assignee: dev@tomcat.apache.org
          Reporter: juri.berla...@tuwien.ac.at
  Target Milestone: -----

This bug happens with Tomcat 9.0.6 and later.

9.0.5 and earlier (including the 8.5 releases) are NOT affected.

Assume the following in web.xml:

<error-page>
    <error-code>404</error-code>
    <location>/errorRedirect</location>
</error-page>

<servlet>
    <servlet-name>Error Redirect Servlet</servlet-name>
   
<servlet-class>org.duckdns.owly.tomcat9test.ErrorRedirectServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Error Redirect Servlet</servlet-name>
    <url-pattern>/errorRedirect</url-pattern>
</servlet-mapping>

Tomcat 9.0.6 and later will always return a Response with status 404 if a non
existing page is accessed - no matter what I do in
ErrorRedirectServlet.doGet(Request, Response).

This is especially bad if one wants to send a redirect, as the location header
is set, yet due to the status code not being 302 it is ignored by the browser.

I tested response.sendRedirect("error.html"), both with and without a preceding
response.setStauts(302).

A small sample project is available at
https://github.com/j-be/tomcat-9-redirect-test.

-- 
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

Reply via email to