首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NoStore没有将缓存控制设置为无存储。

NoStore没有将缓存控制设置为无存储。
EN

Stack Overflow用户
提问于 2016-12-26 21:57:37
回答 2查看 764关注 0票数 1

我们已经在我们的[ResponseCache(NoStore = true)]操作中使用了AccountController.Login

代码语言:javascript
运行
复制
[HttpGet]
[ResponseCache(NoStore = true)]
[AllowAnonymous]
public IActionResult Login(string returnUrl = null)
{
    ViewData["ReturnUrl"] = returnUrl;
    return View();
}

根据文件:

NoStore覆盖大多数其他属性。当此属性设置为true时,Cache-Control头将被设置为"no-store"

在一个新的私有Firefox窗口中,当我们导航到~/Account/Login时,我们会收到以下响应头。

代码语言:javascript
运行
复制
Cache-Control:"no-cache"
Content-Type:"text/html; charset=utf-8"
Date:"Mon, 26 Dec 2016 21:50:27 GMT"
Pragma:"no-cache"
Server:"Kestrel"
Transfer-Encoding:"chunked"

我们正在使用ASP.NET Core1.1.0。如何将Cache-Control头设置为no-store

EN

Stack Overflow用户

回答已采纳

发布于 2016-12-27 01:04:09

问题是ASP.NET核心防伪对所有用户集标头进行核武,并添加自己的。为了克服这个问题,我们添加了我们自己的IHtmlGenerator

代码语言:javascript
运行
复制
// Startup.cs
services.AddSingleton<
    Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator, 
    OurHacks.HtmlGeneratorHack>();

// HtmlGeneratorHack.cs (subsclasses DefaultHtmlGenerator)
public override IHtmlContent GenerateAntiforgery(ViewContext viewContext)
{
    var result = base.GenerateAntiforgery(viewContext);

    viewContext
        .HttpContext
        .Response
        .Headers[HeaderNames.CacheControl] 
            = "no-cache, max-age=0, must-revalidate, no-store";

     return result;
}
票数 5
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41336684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档