我在手机上运行时收到 ERR_CLEARTEXT_NOT_PERMITTED。但它在 webview 和模拟器上运行良好

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

我在项目中使用 Laravel Echo Ionic。 在移动设备上运行时出现 ERR_CLEARTEXT_NOT_PERMITTED 错误,但它在 Webview 和模拟器上运行良好。

我已尝试添加

<uses-permission android:name=“android.permission.INTERNET” />
<uses-permission android:name=“android.permission.ACCESS_NETWORK_STATE” />
<uses-permission android:name=“android.permission.ACCESS_WIFI_STATE” />

on

AndroidManifest.xml
但是,它不起作用。

我尝试添加

<access origin=“*”/>
<allow-intent href=“*” />
<allow-navigation href=“*” />

在 config.xml 上。

最后我尝试用

修改config.xml
<edit-config file=“app/src/main/AndroidManifest.xml” mode=“merge” target=“/manifest/application”>
   <application android:usesCleartextTraffic=“true” />
</edit-config>

但一切都不适合我。

知道如何解决这个问题吗?

android ionic-framework ionic4
4个回答
12
投票

最近发生在我身上,如果你尝试从你的设备连接到任何外部服务器(既然你提到了 laravel echo,那么我假设你正在尝试连接到 IP),那么也许你可以尝试这个。

如果您注意到,位于“resources”文件夹中的network_security_config.xml将被复制到您的android“app”文件夹中

...

<platform name="android">
        <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
            <application android:networkSecurityConfig="@xml/network_security_config" />
        </edit-config>
        <resource-file src="resources/android/xml/network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" />
        <allow-intent href="market:*" />
        <icon density="ldpi" src="resources/android/icon/drawable-ldpi-icon.png" />
        <icon density="mdpi" src="resources/android/icon/drawable-mdpi-icon.png" />
        <icon density="hdpi" src="resources/android/icon/drawable-hdpi-icon.png" />
...
</platform>
...

也许尝试将 resources/android/xml/network_security_config.xml 中的 network_security_config.xml 文件修改为:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain>localhost</domain>
        <domain>your_external_ip_here</domain>
    </domain-config>
</network-security-config>

希望这有帮助。


2
投票
network_security_config.xml

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

仅输入 IP 地址(无 http:// 或 https://)。这对我来说是工作


0
投票

要在移动设备上运行它,您需要在项目中进行一些配置,按照下面的文件路径,您将得到三种可能的解决方案

资源/android/xml/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>
    <domain-config cleartextTrafficPermitted="true">
        <domain>localhost</domain>
        <domain includeSubdomains="true">YOUR DOMAIN/IP</domain>
    </domain-config>
</network-security-config>

配置.xml

<access origin="*" />
<platform name="android">
        <preference name="Scheme" value="http" />
        <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
            <application android:networkSecurityConfig="@xml/network_security_config" />
            <application android:usesCleartextTraffic="true" />
        </edit-config>
        <resource-file src="resources/android/xml/network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" />
  </platform>

platforms/android/app/src/main/AndroidManifest.xml

<application android:usesCleartextTraffic="true">

-2
投票

我的network_security_config.xml 文件中有一些更改,您可以尝试。这对我有用。添加您的 IP 地址

<?xml version="1.0" encoding="utf-8"?><network-security-config>
<domain-config cleartextTrafficPermitted="true">
    <domain>localhost</domain>
      <domain>http://192.168.0.51:8082/hbpms"</domain>
</domain-config>

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