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

Flutter中使用Dio携带Bearer Token调用接口遇302错误,无法获取用户信息

解决Dio请求返回302错误的问题

可能的原因及解决方案

1. 检查请求方法是否匹配接口要求

获取用户列表这类查询接口通常使用GET方法而非POST,当前使用post请求可能触发服务器重定向。尝试修改请求方法:

Future fetchUsers() async {
  Dio dio = Dio();
  dio.options.headers["Authorization"] = "Bearer 52|Umoe5JKgwYKoLacx8m2NtO3TJZa36iIqTh7KW3QR";
  // 改用GET请求
  Response response = await dio.get("http://52.90.175.175/api/user/get");
  print(response);
}

2. 开启自动跟随重定向

你设置了followRedirects = false,导致服务器返回302后不会自动跳转。若服务器的重定向合法(如HTTP转HTTPS),可开启自动跟随:

Future fetchUsers() async {
  Dio dio = Dio();
  dio.options.headers["Authorization"] = "Bearer 52|Umoe5JKgwYKoLacx8m2NtO3TJZa36iIqTh7KW3QR";
  // 允许自动跟随重定向
  dio.options.followRedirects = true;
  // 放宽状态码校验,确保重定向请求能正常执行
  dio.options.validateStatus = (status) => status! < 500;
  Response response = await dio.post("http://52.90.175.175/api/user/get");
  print(response);
}

3. 验证接口地址正确性

确认接口路径是否有误,比如是否应为复数形式/api/users/get,或者是否需要切换为HTTPS协议(将http改为https)。

4. 手动处理重定向

若需自定义重定向逻辑,可从响应头的location字段获取目标地址,携带原Token重新请求:

Future fetchUsers() async {
  Dio dio = Dio();
  dio.options.headers["Authorization"] = "Bearer 52|Umoe5JKgwYKoLacx8m2NtO3TJZa36iIqTh7KW3QR";
  dio.options.followRedirects = false;
  // 允许接收302状态码
  dio.options.validateStatus = (status) => status! == 302 || status! < 500;
  
  Response response = await dio.post("http://52.90.175.175/api/user/get");
  if (response.statusCode == 302) {
    String redirectUrl = response.headers["location"]!.first;
    // 携带原授权头部请求重定向地址
    Response finalResponse = await dio.get(redirectUrl);
    print(finalResponse);
  } else {
    print(response);
  }
}

内容的提问来源于stack exchange,提问作者Afthal Ad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 04:10:35