我有ASP.NET Core2.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”报头已被重写,并分别设置为“无缓存、无存储”和“无缓存”,以防止缓存此响应。任何使用防伪的响应都不应该被缓存。
我知道任何使用防伪的响应都不应该被缓存,而且我确实设置了NoStore=true。所以为什么会有警告。
如果我删除了[ResponseCache(NoStore = true)],那么警告就消失了。但是,在用户单击“上一步”按钮的情况下,我需要该属性。
发布于 2019-11-28 17:15:35
NoStore是不够的。该警告是默认的防伪逻辑检查‘缓存控制’和‘语用’头值的‘无缓存’的结果。如果“缓存控制”报头不包含“无缓存”或“务实”报头是“非缓存”或“空”,则会创建警告。
始终必须在缓存设置中包括位置:
[ResponseCache(Location = ResponseCacheLocation.None, NoStore = true)]这将将“缓存控制”标题设置为“无存储、无缓存”,并将“务实”标题设置为“无缓存”,并且不会创建警告。
https://stackoverflow.com/questions/57298992
复制相似问题