1

当我运行我的 android 项目时,将目标 URL https 更改为 http,出现错误“网络安全策略不允许与 mylocalipaddress 进行 CLEARTEXT 通信”。因此,我将 AndroidManifest.xml 编辑到android:targetSandboxVersion="1"mainfest 标记中,并将 network_security_config.xml 编辑到

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">mylocalipaddress</domain>
        <domain includeSubdomains="true">myipdomain:3000</domain>
    </domain-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
</network-security-config>

但是它们不起作用,我也遇到了同样的错误。我不能确定的一个是 Q> network-security-config 标签下的 domain-config 标签和 base-config 标签是否可以同时使用?如果没问题,我该怎么办?

我的 AndroidManifest.xml 是

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="kr.co.test.test_iaq"
          xmlns:tools="http://schemas.android.com/tools"
          android:targetSandboxVersion="1">
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <meta-data android:name="PW_BROADCAST_PUSH" android:value="true"/>
    <application
            android:name=".MainApplication"
            android:label="@string/app_name"
            android:icon="@mipmap/ic_launcher"
            android:roundIcon="@mipmap/ic_launcher"
            android:allowBackup="true"
            android:theme="@style/AppTheme"
            android:largeHeap="true"
            android:usesCleartextTraffic="true"
            tools:ignore="GoogleAppIndexingWarning"
            android:networkSecurityConfig="@xml/network_security_config"
            tools:replace="android:allowBackup">
        <activity
                android:name=".MainActivity"
                android:launchMode="singleTask"
                android:label="@string/app_name"
                android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
                android:windowSoftInputMode="adjustResize">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
            <!--external link-->
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="test"
                      android:host="jwt"/>
            </intent-filter>
        </activity>
        <activity android:name="com.facebook.react.devsupport.DevSettingsActivity"/>
        <activity android:name="com.kakao.auth.authorization.authcode.KakaoWebViewActivity"
                  android:launchMode="singleTop"
                  android:exported="false"
                  android:windowSoftInputMode="adjustResize">
        </activity>
    </application>

</manifest>

另外,当 POST 请求的端点是 {ipaddress}:3000 case 时会出现这个错误吗?我的意思是 url 不是域名,http://ipaddress:port 大小写。

4

3 回答 3

1

步骤1:

在此处输入图像描述

   <?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
</network-security-config>

第2步:

添加到 AndroidMainfest

android:networkSecurityConfig="@xml/network_security_config"
android:usesCleartextTraffic="true"
于 2021-07-13T09:13:00.973 回答
0

您应该android:networkSecurityConfig根据文档为您的 AndroidManifest.xml 设置属性。否则,Android 将看不到您的 network_security_config.xml 文件:

android:networkSecurityConfig="@xml/network_security_config"

请注意,如果您设置了 android:networkSecurityConfig,则android:usesCleartextTraffic属性将被忽略。

是的,base-config 和 domain-config可以同时存在。

此外,域标签中不允许使用端口号。仅使用域名或 IP 地址:

<domain includeSubdomains="true">example.com</domain>
<domain includeSubdomains="true">localhost</domain>
<domain includeSubdomains="true">127.0.0.1</domain>
于 2021-07-06T02:26:32.847 回答
-2

Android 现在禁止明文网络通信。它假设一切都是加密的。

要允许未加密的内容,您需要将此行添加到 AndroidManifest.xml:

 android:usesCleartextTraffic="true"
于 2021-07-06T02:06:06.987 回答