From 8f05f7815eb97b57a6e28a5e1ebabb420c1c5dcc Mon Sep 17 00:00:00 2001 From: Simon Teixidor Date: Tue, 17 Mar 2026 13:04:47 +0100 Subject: [PATCH] fix(server): use http.TimeFormat for Last-Modified header (#5219) Navidrome returns Last-Modified values like `Fri, 12 Dec 2025 03:32:26 UTC`. This is invalid according to RFC 7231 which requires HTTP dates to use GMT instead of UTC. Switch to http.TimeFormat instead of time.RFC1123 to resolve the issue. --- server/public/handle_images.go | 2 +- server/subsonic/media_retrieval.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/server/public/handle_images.go b/server/public/handle_images.go index f4985dea..50f9238e 100644 --- a/server/public/handle_images.go +++ b/server/public/handle_images.go @@ -60,7 +60,7 @@ func (pub *Router) handleImages(w http.ResponseWriter, r *http.Request) { defer imgReader.Close() w.Header().Set("Cache-Control", "public, max-age=315360000") - w.Header().Set("Last-Modified", lastUpdate.Format(time.RFC1123)) + w.Header().Set("Last-Modified", lastUpdate.Format(http.TimeFormat)) cnt, err := io.Copy(w, imgReader) if err != nil { log.Warn(ctx, "Error sending image", "count", cnt, err) diff --git a/server/subsonic/media_retrieval.go b/server/subsonic/media_retrieval.go index 54fcb5e3..3faae165 100644 --- a/server/subsonic/media_retrieval.go +++ b/server/subsonic/media_retrieval.go @@ -81,7 +81,7 @@ func (api *Router) GetCoverArt(w http.ResponseWriter, r *http.Request) (*respons defer imgReader.Close() w.Header().Set("cache-control", "public, max-age=315360000") - w.Header().Set("last-modified", lastUpdate.Format(time.RFC1123)) + w.Header().Set("last-modified", lastUpdate.Format(http.TimeFormat)) cnt, err := io.Copy(w, imgReader) if err != nil {