LP1*_*P13 8 asp.net-core-mvc asp.net-core asp.net-core-2.0
我有 ASP.NET Core 2.2 应用程序。我已no-store=true针对用户单击浏览器后退按钮的情况设置了所有控制器
[ResponseCache(NoStore = true)]
public class MyController:Controller
{
}
Run Code Online (Sandbox Code Playgroud)
在startup.cs中我添加AutoValidateAntiforgeryTokenAttribute
services.AddMvc(options =>
{
options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute());
})
Run Code Online (Sandbox Code Playgroud)
但是对于每个请求,我都会看到一条警告被记录
“Cache-Control”和“Pragma”标头已被覆盖并分别设置为“no-cache、no-store”和“no-cache”,以防止缓存此响应。任何使用防伪技术的响应都不应该被缓存。
我知道任何使用防伪的响应都不应该被缓存,我确实已经NoStore=true设置了。那么为什么会有警告。
如果我删除[ResponseCache(NoStore = true)],警告就会消失。但是,如果用户单击后退按钮,我需要该属性
小智 12
NoStore这还不够。该警告是默认防伪逻辑检查“cache-control”和“pragma”标头值是否为“no-cache”的结果。如果“cache-control”标头不包含“no-cache”或“pragma”标头是除“no-cache”或空之外的任何其他内容,则会创建该警告。
您始终必须在缓存设置中包含该位置:
[ResponseCache(Location = ResponseCacheLocation.None, NoStore = true)]
Run Code Online (Sandbox Code Playgroud)
这会将“cache-control”标头设置为“no-store,no-cache”,并将“pragma”标头设置为“no-cache”,并且不会创建警告。
| 归档时间: |
|
| 查看次数: |
2175 次 |
| 最近记录: |