【问题标题】:cache-control: no-store header being overwritten by .net core CSRF token generator缓存控制:.net 核心 CSRF 令牌生成器覆盖无存储标头
【发布时间】:2017-11-26 01:35:27
【问题描述】:

为了解决 IE 中的缓存问题,我使用 [ResponseCache(Location = ResponseCacheLocation.None, NoStore = true)] 装饰了我的控制器

查看浏览器开发人员工具中的响应标头时,我注意到我的一些控制器操作响应符合预期 缓存控制:无存储,无缓存

但其他人没有。这让我发疯了,经过一番挖掘后,我在 msdn 文档 中找到了解释 https://docs.microsoft.com/en-us/aspnet/core/performance/caching/middleware

所以我尝试使用 asp-antiforgery="false" 属性在我的表单中禁用 CSRF 保护,果然 no-store 指令已添加到我的响应标头中。

所以我的问题是:有什么方法可以在不牺牲安全性的情况下通过禁用我的表单中的 CSRF 保护来实现这一点?仅仅为了防止 IE 缓存我的页面而必须禁用它肯定是不对的。

提前感谢您能给我的任何帮助/建议!

【问题讨论】:

    标签: internet-explorer caching asp.net-core http-headers asp.net-core-mvc


    【解决方案1】:

    所以我在 ASP.NET Core github 的 repo 中打开了一个问题,微软团队确认这是他们计划在 2.0 版中解决的错误

    https://github.com/aspnet/Mvc/issues/6432

    他们向我指出了一个不太吸引人的解决方法,但鉴于我们别无选择,我会在此处发布以防有人感兴趣。

    https://github.com/aspnet/Antiforgery/issues/116

    来自 github 的建议解决方法的屏幕截图:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-07
      • 2012-03-28
      • 2016-04-19
      • 2019-04-26
      • 1970-01-01
      • 1970-01-01
      • 2016-10-10
      • 1970-01-01
      相关资源
      最近更新 更多