默认情况下,iOS和Android Flutter会禁用不安全的HTTP连接



我需要允许所有HTTP用于代码中的所有请求。

该代码在apk的调试和发布模式下运行良好,但当我将其作为bundle.aab 上传到Google play时,它就不起作用了

1-我创建了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>

2-添加到AndroidManifest/应用程序

<application
android:usesCleartextTraffic="true"
android:networkSecurityConfig="@xml/network_security_config"
......
>

3-将元数据添加到应用程序

<application 
......>
.....
<meta-data android:name="io.flutter.network-policy"
android:resource="@xml/network_security_config"/>
</application>

4-添加权限

<uses-permission android:name="android.permission.INTERNET"/>

你应该使用https,但如果你仍然想使用http协议,那么在iOS中的Info.plist文件中添加以下内容:

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

同样对于android,在AndroidManifest.xml文件中添加此条目:

<application
...
android:usesCleartextTraffic="true">
...
</application>

您要调用的是特定的域吗?

如果您知道可能使用的域,可以尝试添加<domain-config>标记。如果你想强制系统只使用安全连接,这里有一节关于Android文档。

但您可以尝试更改其中的一些值,看看禁用这些强制项是否可以解决您的问题。

试试这样的东西。

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">network.domain.com</domain>
</domain-config>
</network-security-config>

但这只适用于Android。