using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.Net.Http.Headers; namespace zero.Api.Controllers; /// /// Ensures that the request is not cached by the browser /// public class DisableBrowserCacheFilterAttribute : ActionFilterAttribute { public override void OnResultExecuting(ResultExecutingContext context) { base.OnResultExecuting(context); var httpResponse = context.HttpContext.Response; if (httpResponse.StatusCode != 200) return; httpResponse.GetTypedHeaders().CacheControl = new CacheControlHeaderValue() { NoCache = true, MaxAge = TimeSpan.Zero, MustRevalidate = true, NoStore = true }; httpResponse.Headers[HeaderNames.LastModified] = DateTime.Now.ToString("R"); // Format RFC1123 httpResponse.Headers[HeaderNames.Pragma] = "no-cache"; httpResponse.Headers[HeaderNames.Expires] = new DateTime(1990, 1, 1, 0, 0, 0).ToString("R"); } }