From: billbarker Date: Sat, 24 Nov 2007 01:37:36 +0000 (+0000) Subject: Remove conditional headers from the re-played request. X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=3231318dc6d7bc4f43aeab5b38d683f16af17875;p=tomcat7.0 Remove conditional headers from the re-played request. These confuse some UAs (notably FireFox), and we can't really keep them from the HTTP/1.1 spec. Fix for bug #43687 Reported By: Przemyslaw Madzik git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@597781 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/catalina/authenticator/FormAuthenticator.java b/java/org/apache/catalina/authenticator/FormAuthenticator.java index 62bf5eee9..3da730f73 100644 --- a/java/org/apache/catalina/authenticator/FormAuthenticator.java +++ b/java/org/apache/catalina/authenticator/FormAuthenticator.java @@ -402,12 +402,20 @@ public class FormAuthenticator MimeHeaders rmh = request.getCoyoteRequest().getMimeHeaders(); rmh.recycle(); + boolean cachable = "GET".equalsIgnoreCase(saved.getMethod()) || + "HEAD".equalsIgnoreCase(saved.getMethod()); Iterator names = saved.getHeaderNames(); while (names.hasNext()) { String name = (String) names.next(); - Iterator values = saved.getHeaderValues(name); - while (values.hasNext()) { - rmh.addValue(name).setString( (String)values.next() ); + // The browser isn't expecting this conditional reposponse now. + // Assuming that it can quietly recover from an unexpected 412. + // BZ 43687 + if(!("If-Modified-Since".equalsIgnoreCase(name) || + (cachable && "If-None-Match".equalsIgnoreCase(name)))) { + Iterator values = saved.getHeaderValues(name); + while (values.hasNext()) { + rmh.addValue(name).setString( (String)values.next() ); + } } }