33 lines
1011 B
C#
33 lines
1011 B
C#
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc.Filters;
|
|
using Microsoft.Net.Http.Headers;
|
|
|
|
namespace zero.Api.Controllers;
|
|
|
|
/// <summary>
|
|
/// Ensures that the request is not cached by the browser
|
|
/// </summary>
|
|
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");
|
|
}
|
|
} |