Bad state: Insecure HTTP is not allowed by platform
错误状态:平台不允许不安全的HTTP请求
- 原因
IOS 和 Android 9.0 对网络请求做了一些限制,不能直接访问 Http 域名的地址。
iOS端解决方案
解决办法一:iOS,如果安装了Xcode,可以使用Xcode打开flutter中的iOS项目,在项目中进行如下配置:
解决方法二:在flutter项目中,文件夹iOS/Runner/info.plist中,做如下修改:
代码如下
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
安卓端解决方案:
- 首先在android/main/res目录下创建xml文件夹,这个是用来存放xml文件的,方便资源的管理,如果已经存在可以忽略,在xml文件夹下创建network_security_config.xml文件,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>
这段内容是:更改网络的安全配置,允许使用明码传输,原因是因为出于安全考虑,谷歌不允许使用明码传输。
-
其次是在AndroidManifest.xml 中
【路径为:android/app/src/main/AndroidManifest.xml】做如下配置,(1)设置network_security_config.xml文件路径(2)将cleartextTrafficPermitted属性设置为true
-
最后添加网络权限
<uses-permission android:name="android.permission.INTERNET" />