webview无法加载http流量及Expo修改Android权限

小童不学前端 2024-10-02 11:33:01 阅读 59

文章目录

前言react-native-webview无法加载http流量报错

修改http网络权限1.迁移到 EAS Build2.创建 android 文件夹3.修改 AndroidManifest.xml4.添加网络安全配置文件(可选)5. 构建项目6.使用 HTTPS


前言

<code>在使用RN直接创建项目时,我们可以进行修改里面的一些权限,但是当我们使用Expo开发时,却发现没有android的这些文件夹,所以修改权限无从下手,下面一起看看如何在Expo中修改权限。


react-native-webview无法加载http流量

报错

Error loading page

Domain: undefined

Error Code:

Description: net::ERR_CLEARTEXT_NOT_PERMITTED

错误信息 net::ERR_CLEARTEXT_NOT_PERMITTED 通常出现在 Android 应用中的 WebView 或网络请求中,表示应用尝试通过未加密的 HTTP 协议(明文传输)访问资源,而这种行为被禁止了。

这个错误是由于 Android 系统限制未加密的 HTTP 流量。如果可能,建议切换到 HTTPS。如果需要支持 HTTP,可以修改应用的网络安全配置。

修改http网络权限

1.迁移到 EAS Build

通过运行以下命令安装 EAS CLI:

npm install -g eas-cli

初始化 EAS:

eas build:configure

2.创建 android 文件夹

在纯 Expo 管理的工作流中,你无法直接修改 AndroidManifest.xml,所以你需要创建一个自定义的配置文件。

使用 expo prebuild 命令生成 Android 文件夹:

expo prebuild

此命令会为你的项目生成 android 文件夹,让你可以访问原生的 Android 配置。

3.修改 AndroidManifest.xml

在生成的 android/app/src/main/AndroidManifest.xml 文件中,找到 标签,然后添加以下属性:

<application

android:usesCleartextTraffic="true"code>

... >

这将允许所有的 HTTP 请求。如果只希望允许特定域的 HTTP 请求,请参照下面的网络安全配置文件部分。

4.添加网络安全配置文件(可选)

如果你只希望为特定的域启用 HTTP,可以添加网络安全配置文件。

在 android/app/src/main/res/xml/ 文件夹下,创建 network_security_config.xml 文件:

<?xml version="1.0" encoding="utf-8"?>code>

<network-security-config>

<domain-config cleartextTrafficPermitted="true">code>

<domain includeSubdomains="true">example.com</domain>code>

</domain-config>

</network-security-config>

然后在 AndroidManifest.xml 中应用这个安全配置:

<application

android:networkSecurityConfig="@xml/network_security_config"code>

... >

5. 构建项目

eas build --platform android

6.使用 HTTPS

如果可能的话,最好从根本上解决问题,使用 HTTPS 进行网络请求。这样不仅解决了 Android 9 及以上的 HTTP 限制问题,还可以提高数据传输的安全性。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。