如果修改了fetch api,则忽略了



我正在编写一个反应的应用程序,并且我正在支持支持If-Modified-Since标头的API。

我的要求是:

const response = await fetch(
  uri,
  {
    method: 'GET',
    cache: 'no-store',
    headers: {
      Accept: 'application/json',
      'Content-Type': 'application/json',
      Authorization: `token ${token}`,
      'If-Modified-Since': lastUpdatedAt.toUTCString(),
    },
  }
);

现在,问题在于,此请求将始终返回response.status等于200,而如果我使用curl运行相同的请求:

curl -s -o dev/null -w "%{http_code}" $uri -H "If-Modified-Since: Mon, 27 Nov 2017 11:36:41 GMT"

它将正确地返回304

我在做什么错?我需要设置其他选项吗?

将缓存选项设置为"默认值"Fetch将发送IF修饰的中标头 - 不必单独定义标题。请记住,IF修饰的中标头是用于浏览器级别缓存的。如果您不在浏览器中缓存任何内容,请发送标题检查是否可以使用缓存数据(这是304的意思是什么 - 只需使用您已经已被缓存的数据)。

您可以在此处找到fetch()的所有可能配置:https://javascript.info/fetch-api

我也有类似的问题。看来检查304状态是不可靠的。在这里查看:在服务工作者/fetch()

中识别http 304

相关内容

  • 没有找到相关文章

最新更新