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

如何强制Flutter应用使用HTTP而非HTTPS访问无SSL证书网站

解决方案

你的代码里有个核心问题:查询参数中的{"s":"https"}强制指定了使用HTTPS协议,这才是即便用Uri.http也无法走HTTP的根本原因。

直接修改以下两点即可解决问题:

1. 修正协议指定参数

把查询参数里的s值从https改成http,如果后端不需要这个参数,甚至可以直接移除该参数:

修改后的代码示例:

static Uri configUrl(String url){
  // 提取纯净的域名,自动移除http/https前缀和/api/后缀
  String baseDomain = apiConfig.api_url
      .replaceFirst(RegExp(r'^https?://'), '')
      .replaceAll('/api/', '');

  // 拼接完整路径
  String apiPath = '/api/$url${apiConfig.api_token}/${apiConfig.item_purchase_code}/';

  // 强制使用HTTP,同时修正协议参数
  var uri = Uri.http(baseDomain, apiPath, {"s":"http"});

  return uri;
}

如果后端的s参数是多余的,直接删掉第三个参数更简洁:

var uri = Uri.http(baseDomain, apiPath);

2. 配置平台允许HTTP请求

Flutter默认在Android 9+和iOS上会阻止明文HTTP请求,需要额外配置:

Android端

打开android/app/src/main/AndroidManifest.xml,在<application>标签中添加属性:

android:usesCleartextTraffic="true"

iOS端

打开ios/Runner/Info.plist,添加以下配置:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

这样修改后,应用就会强制使用HTTP请求你的网站了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 16:20:28