如何修复 xamarin android 中的“不允许到 x 的明文 HTTP 流量”

问题描述 投票:0回答:5

我的应用程序存在问题,不允许到 x 的明文 HTTP 流量。

我已经尝试将 android:usesCleartextTraffic="true" 放入我的清单中。但我想将“android:usesCleartextTraffic”标志更改为“false”以防止发送未加密的流量。

如何解决这个问题?

http xamarin.forms https xamarin.android cleartext
5个回答
41
投票

如果在某个时候您想移动到 MAUI(没有

AssemblyInfo.cs
),您可能需要将
UsesCleartextTraffic
)添加到
Platforms/Android/MainApplication.cs
中的应用程序属性:

#if DEBUG                                   // connect to local service on the
[Application(UsesCleartextTraffic = true)]  // emulator's host for debugging,
#else                                       // access via http://10.0.2.2
[Application]                               
#endif
public class MainApplication : MauiApplication
{
    ...
}

18
投票

您可以用一行代码解决这个问题。 在 android 项目的属性下打开 AssemblyInfo.cs 并添加以下代码:

[assembly: Application(UsesCleartextTraffic = true)]

18
投票

在毛伊岛,展开 Platforms/Android 并编辑 MainApplication.cs。

将顶部附近的“[Application]”替换为“[Application(UsesCleartextTraffic = true)]”


1
投票

假设您正在访问不支持 HTTPS 的服务器,那么您可以在网络安全配置中创建例外。 您可以像这样创建一个文件

net_sec_conf.xml

<?xml version="1.0" encoding="utf-8" ?>
<network-security-config>
  <base-config cleartextTrafficPermitted="false">
    <trust-anchors>
      <certificates src="system" />
    </trust-anchors>
  </base-config>
  <domain-config cleartextTrafficPermitted="true">
    <domain includeSubdomains="true">api.example.org</domain>
    <trust-anchors>
      <certificates src="system" />
    </trust-anchors>
  </domain-config>
</network-security-config>

然后在清单文件中添加以下行:

android:networkSecurityConfig="@xml/net_sec_conf"

(假设您已将文件放入 xml 文件夹中)。 这样,明文 HTTP 流量将仅允许用于指定的域。

当然,如果服务器支持HTTPS,那么你只需要将你的URL“http://...”更改为“https://...”即可。


0
投票

这适用于 .Net MAUI。

什么对我有用:

  1. 在Platforms\Android\Resources\xml 中创建一个名为network_security_config.xml 的文件(如果不存在,则创建“xml”文件夹)。

  2. 将此配置添加到文件中,将 YOUR_IP_ADRESS 替换为您的机器 ip 地址,您可以通过在 cmd 中运行 'ipconfig' 获取该地址并复制 'Adresse IPv4' 的值:

     <network-security-config>
         <domain-config cleartextTrafficPermitted="true">
             <domain includeSubdomains="true">YOUR_IP_ADRESS</domain>
         </domain-config>
     </network-security-config>
    
  3. 转到 AndroidManifest.xml 右键 -> 打开方式 -> XML 编辑器(取决于您使用的 IDE)并将以下值添加到应用程序节点:

  4. 转到 Platforms/Android 文件夹中的 MainApplication.cs,并将以下代码作为属性添加到类中:

    ... #如果调试 [Application(UsesCleartextTraffic = true)] // 用于开发, #别的 [Application(UsesCleartextTraffic = false)] // 生产 #万一 公共类 MainApplication :MauiApplication ...

编码快乐!

© www.soinside.com 2019 - 2024. All rights reserved.