Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在运行时将network\u security\u config.xml的域名设置为localhost_Android_Http_Https_Android Manifest_Android Network Security Config - Fatal编程技术网

Android 在运行时将network\u security\u config.xml的域名设置为localhost

Android 在运行时将network\u security\u config.xml的域名设置为localhost,android,http,https,android-manifest,android-network-security-config,Android,Http,Https,Android Manifest,Android Network Security Config,自Android 9以来,Android默认只允许通过HTTPS进行网络连接。但是,我所做的唯一请求是通过本地主机完成的(例如http://10.41.199.226:port/FooBar),由 (C#)HttpListener侦听地址:端口组合 由于此请求是通过HTTP发出的,所以默认情况下Android不允许此请求。下面是Android关于network\u security\u config文件的介绍,我可以通过添加以下network\u security\u config.xml文件来

自Android 9以来,Android默认只允许通过HTTPS进行网络连接。但是,我所做的唯一请求是通过本地主机完成的(例如
http://10.41.199.226:port/FooBar
),由 (C#)
HttpListener
侦听地址:端口组合

由于此请求是通过HTTP发出的,所以默认情况下Android不允许此请求。下面是Android关于
network\u security\u config
文件的介绍,我可以通过添加以下
network\u security\u config.xml
文件来允许HTTP连接


使用Android:networkSecurityConfig=“@xml/network\u security\u config”从Android清单调用

这允许完成HTTP请求,但由于这设置了基本配置,因此允许跨整个应用程序发出HTTP请求。这不是一个好主意,因为我可能希望在将来添加传出请求,我希望通过HTTPS发送请求,并希望这个安全网能够实现这一点。这是不可能的

在同一文档中,他们进一步介绍了
域配置
,该配置允许您根据域设置
cleartexttrafficallowed
,我尝试了以下域设置


127.0.0.1
10.0.0.1
本地服务器
在没有结果的情况下,由于未使用https,请求仍被阻止

我查找了设备的本地地址,并将其添加到域列表中


10.41.199.226 
这是可行的,只有在通过本地主机请求时才允许HTTP,而任何传出请求都需要HTTPS

唯一的问题是,我无法知道在应用程序启动之前运行该应用程序的设备的本地ip

所以我的问题是,有没有办法做到这两个方面:

  • 将域名设置为将自动注册为本地ip的名称?(我尝试过的类似于
    localhost
    ,但没有成功)
  • 添加一个“通配符”IP地址,该地址将接受10.x.x.x范围内的任何IP(我曾希望在添加
    10.0.0.0
    地址时设置
    includeSubdomains=“true”
    可以帮我做到这一点。但它没有做到)
  • 最后,是否可以在运行时编辑
    network\u security\u config.xml
    文件,以便在启动应用程序时将其中一个域条目的域名动态更新为当前本地ip
    该应用程序使用Unity 2019.1.8开发,使用.net 4.x IL2CPP脚本运行时

    实现此功能的简单方法是将此属性用于您的AndroidManifest.xml,其中允许所有请求使用所有http:

    android:usesCleartextTraffic="true"
    
    但是,如果您希望为不同的链接提供更多配置,例如,允许某些域使用http,但不允许其他域使用http,则必须提供
    networkSecurityConfig
    文件

    要在Android 9 Pie中执行此操作,您必须在清单
    应用程序
    标记中设置
    networkSecurityConfig
    ,如下所示:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest ... >
        <application android:networkSecurityConfig="@xml/network_security_config">
    
    
    
    
        </application>
    </manifest>
    
    
    
    .

    尝试1.0.2.2而不是本地主机。它对我有用。

    
    10.0.2.2
    
    试试这个

         //in AndroidManifest.xml
        <application
        android:networkSecurityConfig="@xml/network_security_config">
        .
        </application>
    
    
    
    <?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>
    
    //在AndroidManifest.xml中
    .
    
    非常感谢,我遇到了这个问题。
    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <domain-config cleartextTrafficPermitted="true">
            <domain includeSubdomains="true">10.0.2.2</domain>
        </domain-config>
    </network-security-config>
    
         //in AndroidManifest.xml
        <application
        android:networkSecurityConfig="@xml/network_security_config">
        .
        </application>
    
    
    
    <?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>