【问题标题】:Prevent Google Chrome from sending Sec-Fetch headers阻止 Google Chrome 发送 Sec-Fetch 标头
【发布时间】:2020-05-20 10:27:44
【问题描述】:

我想在我的 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;
  } 
}

来自中间件的片段:

if (browserCacheOptions.IsEnable) {
  context.SetCacheControlHeader(browserCacheOptions.MaxAge);
}

await context.Response.WriteAsync(file);

它在 Mozilla 浏览器中运行良好,但在 Chrome 中却不行。

来自 Mozilla 的片段:

我认为其根本原因是 Chrome 会自动在请求中添加额外的 Sec-Fetch 标头 + cache-control: max-age=0

Chrome 自动添加 Sec-Fetch 标头:

注意:如果在单独的浏览器选项卡中打开相同的请求,它在 Chrome 上工作正常(请求中没有 sec-fetch 标头)

问:是否有可能以某种方式禁用此类行为并且不将 sec-fetch 标头自动添加到请求中?

或者如果您有其他建议,请分享。

【问题讨论】:

    标签: caching asp.net-web-api http-headers owin owin-middleware


    【解决方案1】:

    您不能修改 sec-,因为它在 forbidden headers 列表中。 这基本上是一个无法使用客户端脚本修改的标头列表。

    【讨论】:

      猜你喜欢
      • 2021-05-28
      • 1970-01-01
      • 2015-12-01
      • 2018-01-17
      • 1970-01-01
      • 2017-02-04
      • 2022-07-21
      • 2016-04-06
      • 1970-01-01
      相关资源
      最近更新 更多