android - 不允许明文 http 流量
问题描述
我正在从事一个项目,但我被困在登录/注册页面的实现中。当我尝试实现代码时,它给了我错误Cleartext HTTP traffic to 192.168.1.130 not permitted
。我检查了ipconfig
,那是我的 IPv4,所以我添加了192.168.1.130
,但我也检查了127.0.0.1
,但那个也不起作用。
我尝试过实施<domain includeSubdomains="true">192.168.1.130</domain>
,但是一个不起作用(实施android:usesCleartextTraffic="true"
也不起作用)。
我在后端使用 XAMPP,如果我运行 php 代码,一切正常,所以没问题。问题出在 Android Studio 中(我使用的是 Kotlin)。
对于模拟器,我使用的是 Genymotion 模拟器(它使用 VirtualBox)。
这是采用url
. 我已经检查了一切,但仍然没有取得任何成果。
login.setOnClickListener {
var url = "http://192.168.1.130/php/login.php?mobile=" + login_user.text.toString() +
"&password=" + login_password.text.toString()
解决方案
要在 Android 9 Pie 中执行此操作,您必须在 Manifest 应用程序标记中设置 networkSecurityConfig,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config">
</application>
</manifest>
然后创建一个名为 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>
</network-security-config>
如果这不起作用,请从安全域 (HTTPS) 发出请求。
推荐阅读
- java - 如何检查一个列表是否是java中另一个列表的子集?
- scala - 使用scala数组中每个单词的长度
- mysql - 有没有办法限制表中返回唯一值的次数?
- python - 我想在 python 中打印我的排序列表,但它给了我一个错误
- javascript - 以嵌入模式检索 typeform 表单数据
- python - 无法在 ubuntu 18.04 中将 python 程序作为服务运行
- hash - Unhash Drupal 7 用户表密码
- javascript - 使用 jwt Bearer id_token 响应发布请求返回 401,但它在邮递员中使用相同的令牌
- algorithm - if 语句完全正确性的证明
- sql - 从搜索关键字过滤 SQL