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

Posted

技术标签:

【中文标题】如何在 xamarin android 中修复“不允许到 x 的明文 HTTP 流量”【英文标题】:How to fix 'Cleartext HTTP traffic to x not permitted' in xamarin android 【发布时间】:2021-04-13 08:12:41 【问题描述】:

我的应用程序出现问题,不允许到 x 的 Cleartext HTTP 流量。

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

如何解决?

【问题讨论】:

您想以编程方式禁用usesCleartextTraffic 吗? 我将 Cleartext HTTP 流量发送到 x 不允许的问题。如何在清单文件中不启用 android:usesCleartextTraffic 为 true 的情况下解决此问题 请查看***.com/a/54827498/8187800。 你是怎么解决这个问题的,请@SoftDev? 【参考方案1】:

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

[assembly: Application(UsesCleartextTraffic = true)]

【讨论】:

我可能还建议将其包装在 #if DEBUG#endif 中,以防您只想在调试版本中允许此行为。【参考方案2】:

假设您正在访问不支持 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://...”即可。

【讨论】:

我尝试了类似的方法,但无法找到如何将 net_sec_conf.xml 添加到工件中。在 apk 文件中有一个 res/xml 文件夹,但它不包含添加的文件 net_sec_conf.xml。 @Mordecai 的解决方案和 Mike 的调试评论对我有用。

以上是关于如何在 xamarin android 中修复“不允许到 x 的明文 HTTP 流量”的主要内容,如果未能解决你的问题,请参考以下文章

将xamarin android控件添加到visual studio工具箱中

Xamarin 形成如何修复 NavBar

如何在 Xamarin 中修复 dsymutil

如何在 Xamarin 中使用 SetAction

如何在 Xamarin Android 中使用 FontAwesome 图标

如何在 C# 中使用 xamarin 在 android 上获取 PSK? [关闭]