You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中带JWT Bearer Token的GET请求返回401错误如何解决?

Flutter请求ASP.NET Core API返回401授权问题修复方案

我需要向ASP.NET Core API发送JWT Bearer Token完成授权,编写了如下Flutter代码:

// get请求方法
Future<dynamic> get(String api) async {
  var url = Uri.parse(baseUrl + api);
  String? token = await SecureStorage().readSecureStorage('token');
  var headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer $token"
  };

  var response = await http.get(url, headers: headers);
  if (response.statusCode == 200) {
    return response;
  } else {
    print(token);
    // 抛出异常
  }
}

但测试该代码时,响应状态码始终为401,该如何修复?

更新:已解码JWT Token内容

Header:

{
  "alg": "http://www.w3.org/2001/04/xmldsig-more#hmac-sha512",
  "typ": "JWT"
}

Payload:

{
  "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier": "alex2020",
  "http://schemas.microsoft.com/ws/2008/06/identity/claims/role": "developer",
  "UserId": "5",
  "exp": 1682964030
}

排查修复步骤

  • 检查Token是否过期:Payload中的exp字段是时间戳(1682964030对应2023年5月1日左右),如果当前时间已超过该值,Token已失效,需要重新获取
  • 验证Token完整性:打印出来的token必须是完整的三段式字符串(由.分隔的header、payload、signature),确认没有空格、截断或额外字符,同时确保token不为null(如果读取失败,会变成Bearer null导致授权失败)
  • 核对后端JWT配置:
    • 确认ASP.NET Core后端配置的签名算法与Token的alg一致(即HMAC-SHA512)
    • 检查后端是否开启了Audience/Issuer验证,确保生成Token时的参数与后端配置匹配
    • 若后端要求HTTPS,本地测试需确认是否正确配置了HTTPS,或临时禁用HTTPS验证(仅测试环境)
  • 检查请求头格式:Authorization头必须严格遵循Bearer (注意空格)+ Token的格式,确保代码中"Bearer $token"的空格正确
  • 用Postman交叉验证:将相同的Token放入Postman的Bearer Token授权栏,调用同一个API。若Postman也返回401,问题出在Token或后端配置;若Postman成功,则排查Flutter代码的请求头构造逻辑

内容的提问来源于stack exchange,提问作者Alex Wright

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 15:43:28