diff --git a/Iceshrimp.Backend/Controllers/Attributes/MediaTypeRouteFilterAttribute.cs b/Iceshrimp.Backend/Controllers/Attributes/MediaTypeRouteFilterAttribute.cs index 2b92683b..10785c08 100644 --- a/Iceshrimp.Backend/Controllers/Attributes/MediaTypeRouteFilterAttribute.cs +++ b/Iceshrimp.Backend/Controllers/Attributes/MediaTypeRouteFilterAttribute.cs @@ -1,5 +1,6 @@ using System.Net.Http.Headers; using Microsoft.AspNetCore.Mvc.ActionConstraints; +using Microsoft.Net.Http.Headers; namespace Iceshrimp.Backend.Controllers.Attributes; @@ -8,6 +9,9 @@ public class MediaTypeRouteFilterAttribute(params string[] mediaTypes) : Attribu { public bool Accept(ActionConstraintContext context) { + // Add Vary: Accept to the response headers to prevent caches serving the wrong response + context.RouteContext.HttpContext.Response.Headers.Append(HeaderNames.Vary, HeaderNames.Accept); + if (!context.RouteContext.HttpContext.Request.Headers.ContainsKey("Accept")) return false; var accept = context.RouteContext.HttpContext.Request.Headers.Accept.ToString()