Flutter无法请求AWS EC2集成环境端点的问题解决
问题根因
请求执行到await位置直接中断、后续代码不执行,是两个问题共同导致:
- 代码未做异常捕获,网络类异常被直接静默吞掉,没有任何错误输出
- Android、iOS系统默认拦截非白名单域名的明文HTTP请求,生产域名
www.test.com已经在原生配置的白名单内,AWS EC2默认分配的域名不在白名单中,因此被系统直接拦截。这和已验证的现象完全匹配:Postman不受移动端系统网络规则限制可以正常访问,换白名单内的生产域名Flutter请求正常。
解决步骤
1. 先补全异常捕获拿到明确错误
现有代码没有异常处理,请求抛出错误后会直接跳出函数,不会有任何提示。先修改代码加上try/catch:
Future getCode() async { try { Response response = await client.get( Uri.parse('http://ec2-54-202-27-94.sa-east-1.compute.amazonaws.com/test/api/v1/example'), ); print(response.statusCode); } catch (e) { print("请求报错: $e"); } }
运行后如果打印出CLEARTEXT communication not permitted这类明文流量限制的错误,直接按下面的平台配置修改即可。
2. 配置平台网络白名单
注意:以下配置仅适用于测试环境,正式上线不建议开放明文HTTP权限。
Android端配置
找到项目路径下android/app/src/main/AndroidManifest.xml文件:
- 简单测试可以直接在
<application>标签添加属性android:usesCleartextTraffic="true",全局放开明文HTTP请求:
<application android:label="你的应用名称" android:icon="@mipmap/ic_launcher" android:usesCleartextTraffic="true"> <!-- 其余原有配置保持不变 --> </application>
- 如果要做精细化权限控制,只放开指定域名的明文访问,先新建文件
android/app/src/main/res/xml/network_security_config.xml:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">ec2-54-202-27-94.sa-east-1.compute.amazonaws.com</domain> <domain includeSubdomains="true">www.test.com</domain> </domain-config> </network-security-config>
再在AndroidManifest.xml的application标签下添加属性引用该配置:android:networkSecurityConfig="@xml/network_security_config"
iOS端配置
找到项目路径下ios/Runner/Info.plist文件,在NSAppTransportSecurity配置段下添加EC2域名的访问例外:
<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>ec2-54-202-27-94.sa-east-1.compute.amazonaws.com</key> <dict> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> <key>NSIncludesSubdomains</key> <true/> </dict> <key>www.test.com</key> <dict> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> </dict> </dict> </dict>
注意:修改完原生配置后,必须完全卸载手机/模拟器上的现有应用,重新执行
flutter run编译安装,热重载、热重启都不会加载原生配置改动,会导致配置不生效。
长期方案
正式环境建议给EC2实例绑定SSL证书,将接口切换为HTTPS协议,不需要额外配置平台白名单,也符合各大应用商店的上架审核规则。
内容的提问来源于stack exchange,提问作者Massau
相关产品推荐
相关产品推荐

