All*_*ool 7 caching http-headers asp.net-web-api owin owin-middleware
我想在我的 Web API 2(net.framework 4.6.2 应用程序)中缓存静态内容(index.html)
我编写了 OWIN 中间件,它cache-control向响应添加了标头,从而允许从浏览器缓存中检索后续请求。
OWIN 上下文扩展:
public static class BrowserCacheOwinContextExtensions {
public static IOwinContext SetCacheControlHeader(this IOwinContext context, int maxAge) {
context.Response.Headers["Cache-Control"] = $"public, max-age={maxAge}";
context.Response.Headers["Vary"] = "User-Agent";
return context;
}
}
Run Code Online (Sandbox Code Playgroud)
中间件的片段:
if (browserCacheOptions.IsEnable) {
context.SetCacheControlHeader(browserCacheOptions.MaxAge);
}
await context.Response.WriteAsync(file);
Run Code Online (Sandbox Code Playgroud)
它在 Mozilla 浏览器中工作正常,但在 Chrome 中却不行。
来自 Mozilla 的片段:
我相信其根本原因是 Chrome自动向请求添加了额外的Sec-Fetchheaders + 。cache-control: max-age=0
Chrome 自动添加 Sec-Fetch 标头:
注意:如果在单独的浏览器选项卡中打开相同的请求,则它在 Chrome 中工作正常(sec-fetch请求中没有标头)
问:是否可以以某种方式禁用此类行为,并且不自动将 sec-fetch 标头添加到请求中?
或者如果您有其他建议,请分享。
| 归档时间: |
|
| 查看次数: |
1932 次 |
| 最近记录: |