You need to enable JavaScript to run this app. Flutter中usesClearTextTraffic配置未生效 仍报不允许不安全HTTP错误
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中usesClearTextTraffic配置未生效 仍报不允许不安全HTTP错误

Flutter 明文HTTP访问报错的落地排查解决步骤
  • 彻底清除旧构建缓存,从根源避免配置不生效
    修改原生层的Android/iOS配置后,热重载、热重启完全无法触发生效逻辑,必须走全量打包流程:先把设备上安装的旧App彻底卸载,在项目根目录执行flutter clean删除所有历史构建缓存,再重新执行flutter run启动项目。

    80%的配置失效问题,都是改完配置没重新打包,跑的还是之前没开明文权限的旧安装包

  • 精简网络安全配置,去掉冗余标签
    你当前写的network_security_config.xml绑定了多余的系统证书信任锚,纯本地IP调试PHP接口的场景根本用不到这部分,冗余标签反而容易导致配置解析失败,直接精简为以下内容即可:
    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <base-config cleartextTrafficPermitted="true" />
    </network-security-config>
    
    核对两个容易出错的细节:
    • 确认network_security_config.xml的实际存放路径是android/app/src/main/res/xml/,和AndroidManifest里引用的@xml/network_security_config路径完全匹配,没有拼写错误
    • 逐字核对属性大小写:cleartextTrafficPermitted不要误写为驼峰形式的clearTextTrafficPermitted,这类拼写错误是最容易出现但很难被发现的问题
  • 规避AndroidManifest的配置合并冲突
    当你同时在application节点写了android:usesCleartextTraffic="true"和android:networkSecurityConfig时,Android 9及以上系统会优先读取网络安全配置文件的规则。你当前在debug目录下的AndroidManifest配置和main目录的配置不一致,建议把debug目录下的application节点补全相同的明文允许配置,避免构建时配置合并的优先级冲突,导致自定义的规则被系统默认规则覆盖。
  • 补全iOS端的对应配置
    如果你在iOS设备或模拟器上运行项目,只配置Android端的规则完全不生效,需要修改ios/Runner/Info.plist,添加ATS规则放开明文流量限制:
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
    
    改完同样需要重新打包运行,热重载不会更新原生层的plist配置。
  • 代码层校验Uri解析正确性
    确认你替换URL_PREFIX的实际IP值时,没有混入多余空格、转义字符,也没有漏掉开头的http://前缀,比如避免把http://192.168.3.10/flutter_crud误写成192.168.3.10/flutter_crud,这类解析异常也会触发平台的安全校验拦截。

注意:以上配置仅适用于开发阶段本地调试PHP接口的场景,正式上线的项目必须使用HTTPS协议,不要长期开启全局明文流量权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 18:15:09