diff --git a/src/template_utils.rs b/src/template_utils.rs index 26bf58b46..0b1268492 100644 --- a/src/template_utils.rs +++ b/src/template_utils.rs @@ -63,7 +63,10 @@ impl<'r> Responder<'r> for Ructe { let etag = format!("{:x}", hasher.finish()); if r.headers() .get("If-None-Match") - .any(|s| s[1..s.len() - 1] == etag) + // This check matches both weak and strong ETags + // NGINX (and maybe other software) sometimes sends ETags with a + // "W/" prefix, that we ignore here + .any(|s| s[1..s.len() - 1] == etag || s[3..s.len() - 1] == etag) { Response::build() .status(Status::NotModified)