Strapi突然返回401 Unauthorized错误,提供Bearer token仍无效
先看你的代码有个小问题:useFetch里重复设置了Authorization头,而makeRequest已经全局配置了这个头,虽然这不一定会导致401,但建议删掉useFetch中请求的headers配置,避免潜在冲突。
接下来按以下步骤排查:
确认环境变量加载状态
在useFetch里添加console.log(process.env.REACT_APP_API_TOKEN),查看控制台输出的Token是否是新生成的有效值。React的环境变量在开发环境需要重启dev server才会更新,生产环境则需要重新部署才能生效,如果是旧值残留,会导致请求用旧Token失败。直接验证Token有效性
用Postman或curl直接调用目标API,带上新生成的Token(格式:Authorization: Bearer <你的Token>),如果仍返回401,说明问题不在前端——可能是Token生成规则变更、后端验证逻辑调整、账号权限被修改,需要联系后端团队确认;如果Postman请求正常,再回到前端排查。检查Authorization头格式
代码里用的是小写bearer,部分严格的后端只识别大写Bearer,把两处的"bearer "改成"Bearer "再测试。清除浏览器缓存
生产环境下,浏览器可能缓存了旧的静态资源,导致新Token没生效,强制刷新页面(Ctrl+Shift+R)或清除浏览器缓存后重试。查看后端错误日志
401的具体原因只有后端日志能明确——是Token签名无效、过期、权限不足还是其他,让后端同事帮忙查日志,能快速定位问题。
内容的提问来源于stack exchange,提问作者Ashutosh Dhande

