asp.net-core - 添加 ResponseCache 属性时记录缓存控制警告
问题描述
我有 ASP.NET Core 2.2 应用程序。no-store=true
当用户单击浏览器的后退按钮时,我已经设置了所有控制器
[ResponseCache(NoStore = true)]
public class MyController:Controller
{
}
在 startup.cs 我添加 AutoValidateAntiforgeryTokenAttribute
services.AddMvc(options =>
{
options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute());
})
但是对于每个请求,我都会看到一条警告被记录下来
'Cache-Control' 和 'Pragma' 标头已被覆盖并分别设置为 'no-cache, no-store' 和 'no-cache' 以防止缓存此响应。不应缓存任何使用防伪的响应。
我知道任何使用防伪的响应都不应该被缓存,我已经NoStore=true
设置了。那么为什么会有警告。
如果我删除[ResponseCache(NoStore = true)]
,那么警告就消失了。但是,在用户单击后退按钮的情况下,我需要该属性
解决方案
NoStore
还不够。该警告是默认防伪逻辑检查“无缓存”的“缓存控制”和“杂注”标头值的结果。如果“cache-control”标头不包含“no-cache”或“pragma”标头不是“no-cache”或为空,则会创建该警告。
您始终必须在缓存设置中包含该位置:
[ResponseCache(Location = ResponseCacheLocation.None, NoStore = true)]
这会将 'cache-control' 标头设置为 'no-store,no-cache' 以及将 'pragma' 标头设置为 'no-cache' 并且不会创建警告。
推荐阅读
- r - 可用的 r markdown 主题列表
- jquery - 如何使用 jQuery 和 Ajax 验证表单
- java - 无法访问控制器内的 FXML 窗格 (NullPointerException)
- android - 无法检查 MaterialSpinner 中选择的项目
- javascript - ReactJS:当初始状态来自道具时,状态不会在 onChange 上更新
- sql-server - 如何修复左连接 SQL 查询
- c# - 使用 c# asp.net 4.5 将存储为“图像”数据类型的多个图像从 Sql Server 下载到文件夹
- c# - 如何在 WPF 后面的代码中获取“ContentPresenter”中的数据?
- sql - 正则表达式提取(字符串的左侧部分来自 1 之前的 1 个下划线)
- sql - 如何将 Mysqli NESTED JOIN 查询转换为活动记录