📌  相关文章
📜  net:ERR_cleartext_not_permitted (1)

📅  最后修改于: 2023-12-03 15:17:51.218000             🧑  作者: Mango

介绍:'net:ERR_cleartext_not_permitted'

当使用不安全的 HTTP 请求时,chrome 会发出'net: ERR_cleartext_not_permitted' 的错误。这是由于从 Android 9 以后,不允许 HTTP 请求,而只能使用 HTTPS。此外,Chrome 53 以上版本也禁止使用 HTTP 请求。

该错误通常与以下情况相关:

  • 使用 HTTP 访问不安全的网站。
  • 从 HTTP 端口(80)而不是 HTTPS 端口(443)访问安全站点。
  • 在 Android 9.0 或更高版本中使用不受信任的证书。
  • 在 Chrome 53 或更高版本中使用 HTTP。
如何解决 'net:ERR_cleartext_not_permitted'?
  1. 升级到 HTTPS

如果您目标网站已经可以通过 HTTPS 访问,那么这是您最好的选择。 HTTPS 是加密传输协议,将大大增加您与您的用户之间的安全性。

  1. 设置 Android 清单以允许 HTTP 请求
    <application
        android:usesCleartextTraffic="true">
    </application>

在您的 AndroidManifest.xml 文件中,添加上述行将允许您的应用程序使用 HTTP 请求。但是,这并不安全,因此我们建议您采用第一种方法。

  1. 使用网络安全性配置

要使用网络安全性配置来管理哪些请求可以通过 HTTP 进行传输,只需在您的 res 目录下创建一个名为 network_security_config.xml 的文件,然后添加以下内容:

    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <base-config cleartextTrafficPermitted="false">
            <trust-anchors>
                <certificates src="@raw/my_cert"/>
            </trust-anchors>
        </base-config>
    </network-security-config>

该文件将指示您的应用程序仅允许使用 HTTPS 请求,并为您的证书提供了一个安全的存储位置。

  1. 提交 app 下发到 Google Play 和 Android Auto

如果您的应用程序没有经过 Google Play 或不适合用于 Android Auto,那么您将需要托管您的应用程序本身。如果您希望应用程序仅用于特定设备,则可以上传到 Google Play,并将其标记为“不适合 Android Auto”。

结论

'net: ERR_cleartext_not_permitted' 错误的出现是因为 Chrome 和 Android 9 后不允许使用 HTTP 请求。解决它的最佳方法是升级到 HTTPS,这将大大增加您与用户之间的安全性。但是,如果您确实需要使用 HTTP,请使用网络安全性配置并考虑在 AndroidManifest.xml 文件中进行设置。