gpt4 book ai didi

javascript - ASP.Net MVC 禁用浏览器缓存 (firefox)

转载 作者:行者123 更新时间:2023-11-30 18:43:01 24 4
gpt4 key购买 nike

在我的 asp.net mvc 项目中,当登录用户注销并按下后退按钮时,他们能够返回页面并访问需要您登录的数据。

我已经将此页面添加到默认页面:

    HttpContext.Current.Response.Cache.SetAllowResponseInBrowserHistory(false);
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
HttpContext.Current.Response.Cache.SetNoStore();
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetValidUntilExpires(true);

这是我对注销 Controller 的调用:

Welcome <b><%= Html.Encode(Page.User.Identity.Name)%></b>!
<%-- [ <%= Html.ActionLink("Logout", "Logout", "Home")%> ] --%>
<a href="#" onclick="Javascript:DisableHistory()"> Logout</a>

function DisableHistory() {
alert("testing123");
window.history.forward(1);
window.location = "http://localhost/test.web/Home.aspx/Logout";

}



public ActionResult Logout()
{
FormsAuthentication.SignOut();

return RedirectToAction("Index", "Home");

}

这只发生在 firefox 中。我怎样才能避免它缓存该页面。

最佳答案

正确的做法是返回响应头,而不是修改 HTML 页面。

创建一个新属性:

public class DisableCacheAttribute: ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.RequestContext.HttpContext.Response.AddHeader("Pragma", "no-cache");
filterContext.RequestContext.HttpContext.Response.AddHeader("Expires", "-1");
filterContext.RequestContext.HttpContext.Response.AddHeader("Cache-Control", "no-cache, no-store");
base.OnActionExecuting(filterContext);
}
}

并将其用于您的操作:

[DisableCache]
public ActionResult YourMethod()
{
return new Content("This is not cached");
}

此属性也适用于具有更积极缓存的 IE。

关于javascript - ASP.Net MVC 禁用浏览器缓存 (firefox),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6296756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com