From 0d59202aca890a8c2c0a0d2b2286f7a5e879ae3d Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Fri, 27 Dec 2024 20:56:42 +0100 Subject: [PATCH] (crawler) Do not remove W/-prefix on weak e-tags The server expects to get them back prefixed, as we received them. --- .../marginalia/crawl/fetcher/ContentTags.java | 27 ++----------------- 1 file changed, 2 insertions(+), 25 deletions(-) diff --git a/code/processes/crawling-process/java/nu/marginalia/crawl/fetcher/ContentTags.java b/code/processes/crawling-process/java/nu/marginalia/crawl/fetcher/ContentTags.java index c8cddc4e..29a2b101 100644 --- a/code/processes/crawling-process/java/nu/marginalia/crawl/fetcher/ContentTags.java +++ b/code/processes/crawling-process/java/nu/marginalia/crawl/fetcher/ContentTags.java @@ -20,34 +20,11 @@ public record ContentTags(String etag, String lastMod) { public void paint(Request.Builder getBuilder) { if (etag != null) { - getBuilder.addHeader("If-None-Match", ifNoneMatch()); + getBuilder.addHeader("If-None-Match", etag); } if (lastMod != null) { - getBuilder.addHeader("If-Modified-Since", ifModifiedSince()); + getBuilder.addHeader("If-Modified-Since", lastMod); } } - - private String ifNoneMatch() { - // Remove the W/ prefix if it exists - - //'W/' (case-sensitive) indicates that a weak validator is used. Weak etags are - // easy to generate, but are far less useful for comparisons. Strong validators - // are ideal for comparisons but can be very difficult to generate efficiently. - // Weak ETag values of two representations of the same resources might be semantically - // equivalent, but not byte-for-byte identical. This means weak etags prevent caching - // when byte range requests are used, but strong etags mean range requests can - // still be cached. - // - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag - - if (null != etag && etag.startsWith("W/")) { - return etag.substring(2); - } else { - return etag; - } - } - - private String ifModifiedSince() { - return lastMod; - } }