我有nextjs API route /api/auth/signout,它基本上只是清除特定的cookie并发送json回来。问题是,当我在Vercel中部署项目时,这个特定的API第一次正常工作(cookie被清除并给出200响应),但后来它不工作(cookie未被清除并给出304响应)。我想知道,有没有什么方法可以避免缓存只为这条路线?解决此问题的最佳方法是什么?
/api/auth/signout
vs91vp4v1#
您可以为每个API端点配置Cache-Control标头https://nextjs.org/docs/api-reference/next.config.js/headers#cache-control在你的情况下,这样的东西可能会奏效:
Cache-Control
res.setHeader('Cache-Control', 'no-store')
kmynzznz2#
在next.config.js上添加了此配置
next.config.js
async headers() { return [ { source: '/api/<route-name>', headers: [ { key: 'Cache-Control', value: 'no-store, max-age=0', }, ], }, ]; },
svmlkihl3#
这更像是对你的用例的回答,而不是问题的标题:我认为您应该将 checkout http端点视为具有副作用i的端点即用户会话的破坏(即使服务器端可能没有发生任何事情)。对于有副作用的http端点,建议使用适当的http方法调用它们,这意味着将发生副作用e。在这种情况下,DELETE将是好的。根据http规范,不应该缓存对http DELETE请求的响应。
3条答案
按热度按时间vs91vp4v1#
您可以为每个API端点配置
Cache-Control
标头https://nextjs.org/docs/api-reference/next.config.js/headers#cache-control
在你的情况下,这样的东西可能会奏效:
kmynzznz2#
在
next.config.js
上添加了此配置svmlkihl3#
这更像是对你的用例的回答,而不是问题的标题:
我认为您应该将 checkout http端点视为具有副作用i的端点即用户会话的破坏(即使服务器端可能没有发生任何事情)。对于有副作用的http端点,建议使用适当的http方法调用它们,这意味着将发生副作用e。在这种情况下,DELETE将是好的。根据http规范,不应该缓存对http DELETE请求的响应。