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

Flutter中如何检测URL是否存在并获取statusCode,解决XMLHttpRequest报错

错误原因

你遇到的XMLHttpRequest error是Flutter Web场景下的典型CORS(跨域资源共享)限制问题,本质是浏览器的安全策略拦截了跨域请求,和你编写的状态码判断逻辑本身无关。如果是在安卓、iOS、桌面端运行同款代码,不会触发该错误。

解决方案

根据你的使用场景选择对应方案:

  • 本地开发调试阶段:运行项目时添加禁用浏览器安全策略的参数即可临时绕过限制,该方案仅适用于本地调试,不可用于生产环境:
    flutter run -d chrome --web-browser-flag "--disable-web-security"
    
  • 请求的接口为自有可控接口:在后端服务配置CORS响应头,添加允许你的前端域名访问的规则即可。
  • 请求的是第三方不可控接口:你需要自行搭建代理转发服务,由代理服务发起请求拿到结果后再返回给前端,避开浏览器的跨域限制。

代码优化建议

你的原有代码缺少异常捕获逻辑,就算没有跨域问题,遇到网络超时、404、500等异常场景也会直接崩溃,优化后代码如下:

import 'package:http/http.dart' as http;

final url = Uri.parse('https://www.google.com');

void getStatusCode() async {
  try {
    http.Response response = await http.get(url);
    if (response.statusCode == 200) {
      print('exists');
    } else {
      print('not exists');
    }
  } catch (e) {
    // 可在此处捕获CORS错误、网络错误等各类异常
    print('请求出错:$e');
    print('not exists');
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:18:00