我正在编写一个反应的应用程序,并且我正在支持支持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()