gpt4 book ai didi

http - 如何阻止 chrome 缓存来自 WebApi 的 REST 响应?

转载 作者:可可西里 更新时间:2023-11-01 15:09:46 25 4
gpt4 key购买 nike

我正在使用 ASP.NET WebApi 并使用以下代码来停止缓存所有内容:

public override System.Threading.Tasks.Task<HttpResponseMessage> ExecuteAsync(System.Web.Http.Controllers.HttpControllerContext controllerContext, System.Threading.CancellationToken cancellationToken)
{
System.Threading.Tasks.Task<HttpResponseMessage> task = base.ExecuteAsync(controllerContext, cancellationToken);
task.GetAwaiter().OnCompleted(() =>
{
task.Result.Headers.CacheControl = new CacheControlHeaderValue()
{
NoCache = true,
NoStore = true,
MaxAge = new TimeSpan(0),
MustRevalidate = true
};
task.Result.Headers.Pragma.Add(new NameValueHeaderValue("no-cache"));
task.Result.Content.Headers.Expires = DateTimeOffset.MinValue;
});
return task;
}

结果标题看起来像这样(chrome):

Cache-Control:no-store, must-revalidate, no-cache, max-age=0
Content-Length:1891
Content-Type:application/json; charset=utf-8
Date:Fri, 19 Jul 2013 20:40:23 GMT
Expires:Mon, 01 Jan 0001 00:00:00 GMT
Pragma:no-cache
Server:Microsoft-IIS/8.0

我在阅读有关错误 (How to stop chrome from caching) 后添加了“no-store”。

但是,无论我做什么,当我做一些让我离开这个页面的事情,然后使用“后退”按钮时,chrome 总是从缓存中加载:

Request Method:GET
Status Code:200 OK (from cache)

有人知道为什么会这样吗?我已确认此请求从未命中服务器。

最佳答案

答案是 Chrome 不喜欢“Expires:Mon, 01 Jan 0001 00:00:00 GMT”(基本上是假日期)。

我将我的日期更改为他们在 Google API 中使用的日期,并且有效:

Cache-Control:no-store, must-revalidate, no-cache, max-age=0
Content-Length:1897
Content-Type:application/json; charset=utf-8
Date:Fri, 19 Jul 2013 20:51:49 GMT
Expires:Mon, 01 Jan 1990 00:00:00 GMT
Pragma:no-cache
Server:Microsoft-IIS/8.0

因此,对于遇到此问题的任何其他人,请确保将过期日期设置为这个任意日期!

关于http - 如何阻止 chrome 缓存来自 WebApi 的 REST 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17755239/

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