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

Flutter应用发起API请求时出现ClientException: XMLHttpRequest错误求助

解决Flutter中ClientException: XMLHttpRequest错误的方案

以下是针对该错误的常见排查与解决步骤:

  • 验证本地服务可用性
    先在浏览器或Postman中直接访问http://localhost:3000/proxy,确认服务是否正常启动、接口路径是否正确,能否返回有效响应。如果是真机测试,不能用localhost,需替换为开发电脑的局域网IP(比如192.168.1.100:3000/proxy),因为真机的localhost指向自身而非开发设备。

  • 处理CORS跨域限制
    该错误多数情况是跨域问题导致(尤其Flutter Web端),需要在后端服务配置CORS规则,允许Flutter应用的来源访问接口。以Node.js Express框架为例,可通过cors中间件配置:

    const cors = require('cors');
    app.use(cors({
      origin: "你的Flutter应用地址", // 如http://localhost:5000或真机IP
      methods: ["GET", "POST", "PUT"],
      allowedHeaders: ["Content-Type"]
    }));
    
  • 检查Flutter请求代码
    确保网络请求写法无误,以http包为例:

    import 'package:http/http.dart' as http;
    
    Future<void> callProxyApi() async {
      try {
        final uri = Uri.parse('http://localhost:3000/proxy');
        final response = await http.get(uri);
        if (response.statusCode == 200) {
          // 处理返回数据
        } else {
          // 处理错误状态码
        }
      } catch (e) {
        print('请求异常: $e');
      }
    }
    

    若使用dio包,排查是否存在拦截器干扰、超时时间设置过短等问题。

  • 配置平台网络权限

    • 安卓:在android/app/src/main/AndroidManifest.xml中添加网络权限:
      <uses-permission android:name="android.permission.INTERNET" />
      
    • iOS:在ios/Runner/Info.plist中添加HTTP请求允许配置(调试阶段可用,正式版建议指定具体域名):
      <key>NSAppTransportSecurity</key>
      <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
      </dict>
      
  • 排查代理配置
    若之前设置过代理,先关闭代理直接访问服务,确认是否因代理配置错误导致连接失败。如果是通过Flutter运行参数设置的代理(如flutter run --dart-define=flutter.network_proxy=http://xxx:port),需验证代理地址和端口是否有效。

内容的提问来源于stack exchange,提问作者Siddharth Gawande

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 17:42:09