diff --git a/src/Umbraco.Cms.Api.Delivery/Controllers/Content/ContentApiControllerBase.cs b/src/Umbraco.Cms.Api.Delivery/Controllers/Content/ContentApiControllerBase.cs index 4637055c11..1db4d9d395 100644 --- a/src/Umbraco.Cms.Api.Delivery/Controllers/Content/ContentApiControllerBase.cs +++ b/src/Umbraco.Cms.Api.Delivery/Controllers/Content/ContentApiControllerBase.cs @@ -15,6 +15,7 @@ namespace Umbraco.Cms.Api.Delivery.Controllers.Content; [ApiExplorerSettings(GroupName = "Content")] [LocalizeFromAcceptLanguageHeader] [ValidateStartItem] +[AddVaryHeader] [OutputCache(PolicyName = Constants.DeliveryApi.OutputCache.ContentCachePolicy)] public abstract class ContentApiControllerBase : DeliveryApiControllerBase { diff --git a/src/Umbraco.Cms.Api.Delivery/Filters/AddVaryHeaderAttribute.cs b/src/Umbraco.Cms.Api.Delivery/Filters/AddVaryHeaderAttribute.cs new file mode 100644 index 0000000000..f8905e72d5 --- /dev/null +++ b/src/Umbraco.Cms.Api.Delivery/Filters/AddVaryHeaderAttribute.cs @@ -0,0 +1,13 @@ +using Microsoft.AspNetCore.Mvc.Filters; + +namespace Umbraco.Cms.Api.Delivery.Filters; + +public sealed class AddVaryHeaderAttribute : ActionFilterAttribute +{ + private const string Vary = "Accept-Language, Preview, Start-Item"; + + public override void OnResultExecuting(ResultExecutingContext context) + => context.HttpContext.Response.Headers.Vary = context.HttpContext.Response.Headers.Vary.Count > 0 + ? $"{context.HttpContext.Response.Headers.Vary}, {Vary}" + : Vary; +}