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

Flutter中http:^0.13.5的Get请求返回409未认证,Insomnia正常,语法是否有误?

问题排查:Flutter http请求返回409未认证,Insomnia测试正常

你的代码语法本身没有问题,能够正常发起GET请求。出现{"status":409,"message":"Unauthenticated"}的错误,核心原因是Flutter端发送的请求与Insomnia的请求存在未被注意到的差异,以下是具体排查方向:

  • 验证Authorization头的完整性:
    虽然代码中Authorization头的格式看似正确,但可以在请求前打印实际发送的头信息,确认Bearer与token之间是否只有一个空格,没有多余字符:

    final headers = {
      'Authorization': 'Bearer 40fe071962846075452a4f6123ae71697463cad20f51e237e2035b41af0513d8',
    };
    print(headers['Authorization']); // 打印确认格式
    final response = await http.get(
      Uri.parse('http://sys-dev.searchandstay.com/api/admin/house_rules'),
      headers: headers,
    );
    
  • 确认URL的一致性:
    检查Uri.parse生成的URL是否与Insomnia中的完全一致(包括路径、参数、大小写等),可以打印生成的Uri对象:

    final url = Uri.parse('http://sys-dev.searchandstay.com/api/admin/house_rules');
    print(url.toString());
    

    避免因Uri自动转义或拼写差异导致后端路由匹配失败。

  • 排查Cookie或隐式头差异:
    Insomnia会自动保存并携带之前请求的Cookie(比如Session ID),而Flutter的http请求默认是无状态的,不会保留Cookie。如果后端同时依赖Cookie和Authorization头进行认证,就会出现这种差异。可以在Insomnia中禁用Cookie后重新测试,看是否也返回409,以此验证。

  • 模拟Insomnia的请求头:
    尝试添加Insomnia中的User-Agent等额外头信息,消除请求标识差异:

    headers: {
      'Authorization': 'Bearer 40fe071962846075452a4f6123ae71697463cad20f51e237e2035b41af0513d8',
      'User-Agent': 'Insomnia/2023.5.8', // 替换为你使用的Insomnia版本对应的User-Agent
      'Accept': '*/*',
    },
    
  • 抓包对比请求细节:
    使用Charles、Fiddler等工具分别抓取Flutter App和Insomnia的请求,对比两者的请求头、请求路径、甚至请求方法是否完全一致,这是定位差异最直接的方式。

内容的提问来源于stack exchange,提问作者Eric Melo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:32:38