不允许对server.com的明文HTTP流量

时间:2018-10-24 11:52:20

标签: android

我的代码正在android kitkat上运行,但它给io异常

     Cleartext http traffic to server.com not permitted 

在馅饼中。 我正在使用凌空拨打服务器。

5 个答案:

答案 0 :(得分:6)

第一步是了解为什么 Google强制您使用HTTPS。您可以在开发人员页面上阅读更多有关此内容的信息。

关于解决方法,有两种选择:

1)使用HTTPS!

2)在您的XML文件夹中创建一个名为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>
</network-security-config>

然后在清单文件中添加此

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

    </application>
</manifest> 

出于明显的原因,不建议第二点!

答案 1 :(得分:5)

简单解决方案:

在清单中添加以下行:

android:usesCleartextTraffic="true"

因为我的json API的php页面遇到了同样的问题。

它应该像这样:

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        ...
        android:usesCleartextTraffic="true"
        ...>
        ...
    </application>
</manifest>

希望它能奏效。

答案 2 :(得分:0)

如果没有使用HTTPS的选项,则可以使用网络安全配置xml文件

<?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <domain-config cleartextTrafficPermitted="true">
            <domain includeSubdomains="true">192.168.1.100</domain>
            <domain includeSubdomains="true">http://example1.com</domain>
            <domain includeSubdomains="true">example1.com</domain>
        </domain-config>
    </network-security-config>

然后您需要使用此行将其添加到Android Manifest中的<application部分

android:networkSecurityConfig="@xml/testing_security"

在其他答案中提出了一些替代方案-我说允许所有明文通信都是不明智的,因为第三方库可能会危害您。最好明确定义主机目标,以最大程度地减少这种不安全通信的影响

答案 3 :(得分:0)

在您的AndroidManifest.xml的application元素中添加android:usesCleartextTraffic属性即可!

要在 Xamarin表单中执行此操作,可以通过在Android解决方案的 AssemblyInfo.cs 中添加以下内容来实现。

// Because I only want this in development
#if DEBUG 
[assembly: Application(UsesCleartextTraffic = true)]
#endif

答案 4 :(得分:0)

已解决

编辑您的►‘network security_config.xml

添加行►Domain.com或您的IP(12.34.456.78)

更改后,它将看起来像这样

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
           <domain includeSubdomains="true">Domain.com OR your IP(12.34.456.78)</domain>
           <domain includeSubdomains="true">localhost</domain>
    </domain-config>
</network-security-config>