You need to enable JavaScript to run this app. Flutter iOS端报错平台不允许不安全HTTP,配置info.plist后问题仍未解决
优惠活动
大模型
产品
解决方案
定价
更多

Flutter iOS端报错平台不允许不安全HTTP,配置info.plist后问题仍未解决

问题根源:Info.plist 配置层级错误

Info.plist 是严格的「键-值」结构,每个 key 必须对应明确的 value(字符串、字典、数组等)。你当前的写法把 NSAppTransportSecurity 和 NSAllowsArbitraryLoads 设为同级 key:

  • NSAppTransportSecurity 没有对应任何有效 value,会被 iOS 直接忽略
  • NSAllowsArbitraryLoads 不属于允许放在 plist 顶层的 key,同样不会生效
    这就是你加了配置但 ATS 拦截规则未关闭的核心原因。
正确的 ATS 配置写法

NSAppTransportSecurity 是父级规则容器,它的 value 必须是一个字典,所有 ATS 相关的子配置都要放在这个字典内部。正确的配置片段如下:

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

你需要把原来 plist 中错误的三行:

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

替换为上面这段正确的配置即可。

配置修复后的必做操作

iOS 和 Flutter 的构建缓存经常导致 plist 修改不生效,按顺序执行以下操作:

  • 执行 flutter clean 清空项目全局构建缓存
  • 确认你修改的是项目主配置路径 ios/Runner/Info.plist,而非其他 target 下的 plist 文件
  • 进入项目的 ios 目录,删除 Pods 文件夹、Podfile.lock 文件
  • 执行 cd ios && pod install --repo-update 重新拉取 iOS 依赖
  • 完全卸载模拟器/真机上已安装的旧版本 App(旧 plist 会被系统缓存,不卸载会读取旧配置)
  • 重新执行 flutter run 启动项目

补充说明:如果修复层级后仍有部分 HTTP 请求被拦截,可在 ATS 的字典内额外添加 <key>NSAllowsLocalNetworking</key><true/> 放行本地局域网请求;如果只想开放指定 HTTP 域名而非全局放行,也可以在 ATS 字典内添加对应域名的例外规则。

内容的提问来源于stack exchange,提问作者Ravindra S. Patil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 19:36:05