flutter错误:Bad state: Insecure HTTP is not allowed by platform

在使用http、dio访问http网络链接时,Flutter会报出StateError (Bad state: Insecure HTTP is not allowed by platform: http://xxxx.xxxx.xxx)错误,这是因为IOS 和 Android 9.0 对网络请求做了一些限制,不能直接访问 Http 域名的地址。

解决办法

1.Android解决办法

为 android 的清单文件 AndroidManifest.xml设置usesCleartextTraffic属性为False。

1.配置network_security_config.xml

添加或修改android/app/src/main/res/xml/network_security_config.xml
增加usesCleartextTraffic节内容

<?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>

2.配置AndroidManifest.xml

修改android/app/src/main/AndroidManifest.xml文件,application元素增加属性android:networkSecurityConfig="@xml/network_security_config"
flutter-insecure-http
重启程序运行

1.IOS解决办法

ios/Runner/Info.plist,添加关于 NSAppTransportSecurity NSAllowsArbitraryLoads 的配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
</dict>
</plist>

留下评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据