В настоящее время у меня есть приложение mvc, которое находится за безопасным сторонним шлюзом.Этот шлюз кеширует 302 ответа, что в некоторых сценариях приводит к бесконечному циклу загрузки экранов в моем приложении.Я пытаюсь найти способ добавить пользовательские заголовки к ответу, но только на 302, поскольку я никогда не хочу, чтобы они кэшировались, однако моему приложению действительно необходимо кэшировать ресурсы других кодов состояния.Я знаю, что могу использовать:
<httpProtocol>
<customHeaders>
<add name="Cache-Control" value="max-age=0, no-cache, no-store, must-revalidate" />
<add name="Pragma" value="no-cache" />
</customHeaders>
</httpProtocol>
, однако это установит заголовки кэша для всех ответов, а не только 302.Как мне добиться такого же поведения, но только для 302 перенаправлений?
Я также попытался создать для него специальный фильтр следующим образом:
public class CustomCacheHeaderFilter : ActionFilterAttribute
{
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
if(actionExecutedContext.Response.StatusCode == System.Net.HttpStatusCode.Redirect)
{
actionExecutedContext.Response.Headers.Add("Cache-Control", "max-age=0, no-cache, no-store, must-revalidate");
actionExecutedContext.Response.Headers.Add("Pragma", "no-cache");
}
}
}
и зарегистрироваться в Global.asax
:
protected void Application_Start(object sender, EventArgs e)
{
GlobalConfiguration.Configuration.Filters.Add(new CustomCacheHeaderFilter());
}
однако это, похоже, не имеет никакого эффекта.Обратите внимание, что это приложение Sitefinity MVC.