Maui Blazor 中文社区 QQ群:645660665

Maui 连接到本地 Web 服务(明文流量)

Android 网络配置

在安卓访问 http://192.168.1.150:5000 报错 Cleartext HTTP traffic to x not permitted 不允许向x发送明文 HTTP 流量

在 Android 上启用明文本地流量主要有两种方法:

  • 启用明文网络流量,以便与所有域通信。
  • 启用明文网络流量,以便与 localhost 域通信。

为所有域启用明文网络流量

可以通过将 Application 特性的 UsesCleartextTraffic 属性设置为 true 来启用所有域的明文网络流量。
在文件添加 UsesCleartextTraffic = true

Platforms/Android/MainApplication.cs

[Application(UsesCleartextTraffic = true)]
public class MainApplication : MauiApplication
{
  ...
}

如果存在网络安全配置文件,则会在 Android 7.0 (API 24) 和更高版本上忽略 UsesCleartextTraffic 属性

为 localhost 域启用明文网络流量

可以通过创建网络安全配置文件来启用 localhost 域的明文网络流量。 这可以通过将名为 network_security_config.xml 的新 XML 文件添加到 .NET MAUI 应用项目中的 Platforms\Android\Resources\xml 文件夹来实现。 XML 文件应指定以下配置:

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

确保 network_security_config.xml 文件的生成操作设置为 AndroidResource。

如果你访问的服务器不支持 HTTPS,那么你可以在网络安全配置中创建例外, 这样,明文 HTTP 流量将仅允许在指定的域中使用。

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

这个步骤官网没说得很清楚, 做完步骤会出现错误 maui resource xml/network_security_config (aka com.myconpany:xml/network_security_config) not found 执行下面步骤就可以了

a. 在解决方案中,右键单击 network_security_config 文件并选择“属性”。“属性”框将在解决方案资源管理器下方直接打开。
b. 在“高级”下,您会找到“构建操作”。只需单击它即可显示下拉箭头。
c. 单击箭头并选择 AndroidResource。

然后,直接编辑

Platforms/Android/MainApplication.cs

[Application(UsesCleartextTraffic = true,NetworkSecurityConfig = "@xml/network_security_config")]
public class MainApplication : MauiApplication
{
  ...
}

或者配置 .NET MAUI 应用项目中 Platforms\Android\AndroidManifest.xml 文件内 application 节点的 networkSecurityConfig 属性:

<?xml version="1.0" encoding="utf-8"?>
<manifest>
    <application android:networkSecurityConfig="@xml/network_security_config" ...>
        ...
    </application>
</manifest>

iOS ATS 配置

若要在 iOS 上启用明文本地流量,应在 .NET MAUI 应用中选择退出 Apple 传输安全性 (ATS)。 这可以通过将以下配置添加到 .NET MAUI 应用项目中的 Platforms\iOS\Info.plist 文件来实现:

<key>NSAppTransportSecurity</key>    
<dict>
    <key>NSAllowsLocalNetworking</key>
    <true/>
</dict>
posted @ 2025-05-05 23:42  AlexChow  阅读(121)  评论(0)    收藏  举报