ASP.NET Core 6 Web API与Firebase Auth、React前端Bearer认证失败问题
ASP.NET Core 6 Web API + Firebase Auth React前端401错误排查解决
问题核心原因
前端请求中使用了错误的HTTP头字段名Authentication,正确的JWT认证头应该是Authorization。ASP.NET Core的JWT Bearer认证中间件只会读取Authorization头中的Bearer Token,因此前端传错头导致后端无法识别Token,返回401错误。
修复步骤
修改前端fetch请求的headers部分,将错误的Authentication字段替换为Authorization:
const testFetch = async () => { getIdToken(auth.currentUser!).then(async (token) => { const res = await fetch('https://localhost:51437/test/private', { method: 'GET', headers: { Authorization: `Bearer ${token}`, // 修正为正确的头字段名 Accept: 'application/json', 'Content-Type': 'application/json', }, }); const result = await res.json(); console.log(result); }); };
逻辑验证说明
- Postman请求正常的原因是Postman中正确使用了
Authorization头,与前端的错误头形成明确差异 - 此前关闭
ValidateIssuer/ValidateAudience/ValidateLifetime无效,是因为后端根本没接收到正确的Token,验证参数调整无法解决头字段错误的问题 - 非授权端点正常说明CORS和基础请求通路无问题,故障仅局限于认证头的传递环节
额外排查建议
- 可通过浏览器开发者工具的Network标签,确认请求中
Authorization字段是否正确发送 - 后端已开启
IncludeErrorDetails = true,后续若遇其他Token解析问题,可通过日志进一步定位
内容的提问来源于stack exchange,提问作者Devon
相关产品推荐
相关产品推荐

