gpt4 book ai didi

c# - 缓存控制:无存储,必须重新验证未发送到 IIS7 + ASP.NET MVC 中的客户端浏览器

转载 作者:IT王子 更新时间:2023-10-29 04:16:31 25 4
gpt4 key购买 nike

我试图确保某个页面永远不会被缓存,并且当用户单击后退按钮时永远不会显示。 This very highly rated answer (currently 1068 upvotes) says to use :

Response.AppendHeader("Cache-Control", "no-cache, no-store, must-revalidate");
Response.AppendHeader("Pragma", "no-cache");
Response.AppendHeader("Expires", "0");

但是在 IIS7/ASP.NET MVC 中,当我发送这些 header 时,客户端会看到这些响应 header :

Cache-control: private, s-maxage=0 // that's not what I set them to
Pragma: no-cache
Expires: 0

缓存控制 header 发生了什么变化? IIS7 或 ASP.NET 的原生内容会覆盖它吗?我已经检查了我的解决方案,但没有覆盖此 header 的代码。

当我首先添加 Response.Headers.Remove("Cache-Control"); 时,没有任何区别:

Response.Headers.Remove("Cache-Control");
Response.AppendHeader("Cache-Control", "no-cache, no-store, must-revalidate");
Response.AppendHeader("Pragma", "no-cache");
Response.AppendHeader("Expires", "0");

当我添加一个 [OutputCache] 属性时:

[OutputCache(Location = OutputCacheLocation.None)]
public ActionResult DoSomething()
{
Response.Headers.Remove("Cache-Control");
Response.AppendHeader("Cache-Control", "no-cache, no-store, must-revalidate");
Response.AppendHeader("Pragma", "no-cache");
Response.AppendHeader("Expires", "0");

var model = DoSomething();
return View(model);
}

然后客户端响应头变为:

Cache-control: no-cache
Pragma: no-cache
Expires: 0

哪个更接近,但仍然不是我要发送的 header 。这些 header 在哪里被覆盖?我该如何阻止它?

编辑:我已经检查过,错误的 header 被发送到 Chrome、FF、IE 和 Safari,所以它看起来是服务器问题,而不是浏览器相关的问题。

最佳答案

通过反复试验,我发现在 ASP.NET MVC 中为 IIS7 正确设置 header 的一种方法是:

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.AppendCacheExtension("no-store, must-revalidate");
Response.AppendHeader("Pragma", "no-cache");
Response.AppendHeader("Expires", "0");

第一行设置Cache-controlno-cache,第二行添加其他属性no-store, must-revalidate.

这可能不是唯一的方法,但如果更直接 Response.AppendHeader("Cache-control", "no-cache, no-store, must-revalidate"); 失败。

可能由此解决的其他相关 IIS7 缓存控制问题是:

关于c# - 缓存控制:无存储,必须重新验证未发送到 IIS7 + ASP.NET MVC 中的客户端浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22443932/

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