fix: preserve security headers on cache hits

This commit is contained in:
2025-12-26 17:33:12 +01:00
parent 5477bbf0a7
commit 77886ddef5

View File

@@ -112,8 +112,11 @@ func CacheMiddleware(cache Cache, config *CacheConfig) func(http.Handler) http.H
if entry, err := cache.Get(cacheKey); err == nil { if entry, err := cache.Get(cacheKey); err == nil {
for key, values := range entry.Headers { for key, values := range entry.Headers {
for _, value := range values { if len(values) > 0 {
w.Header().Add(key, value) w.Header().Set(key, values[0])
for i := 1; i < len(values); i++ {
w.Header().Add(key, values[i])
}
} }
} }
w.Header().Set("X-Cache", "HIT") w.Header().Set("X-Cache", "HIT")
@@ -155,6 +158,11 @@ type responseCapturer struct {
func (rc *responseCapturer) WriteHeader(code int) { func (rc *responseCapturer) WriteHeader(code int) {
rc.statusCode = code rc.statusCode = code
for key, values := range rc.headers {
for _, value := range values {
rc.ResponseWriter.Header().Add(key, value)
}
}
rc.ResponseWriter.WriteHeader(code) rc.ResponseWriter.WriteHeader(code)
} }