Whitelist白名单问题导致访问网络资源失败的解决-cordova-plugin-whitelist弃用问题

Whitelist白名单问题导致访问网络资源失败的解决


一、前言

自 Cordova Android 8.0 版本起,cordova-plugin-whitelist 插件的功能已经被弃用,在目前最新版本Cordova Android12.0.1或者更高版本中,要安装它(无论是plugin add还是在config.xml中配置),都会提示:
在这里插入图片描述
原因是新版本的Android系统出于安全考虑,采用了更严格的安全策略,如CORS(跨源资源共享)和清单文件中的网络权限控制策略。

一、解决方案

因此,对于涉及跨域访问或对internet资源访问时,可采用下述方法解决:

1.在html的meta中定义安全策略

使用Content Security Policy (CSP),在你的Cordova项目(或需要安全访问)的index.html文件中,设置Content Security Policy(CSP)来控制哪些外部资源可以被加载。
例如,

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://example.com; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' data:;">

这个例子中,页面资源内容可以访问:
(1)default-src
来自:自身(‘self’)、data协议、gap协议,网址https://example.com,如果是多个网址,可以在examplt.com后空格分隔,继续添加,例如:

 content="default-src 'self' data: https://ssl.gstatic.com https://api.github.com/search/repositories;"

(2)style-src和script-src
样式和内联脚本也被允许可来自自身(”self")
(3)img-src
图片加载规则可来自自身(”self")和data协议。

2.配置AndroidManifest.xml

如果你需要允许应用访问特定的网络地址,可以在platforms/android/app/src/main/AndroidManifest.xml文件中手动添加网络权限。例如,允许应用访问互联网:

<uses-permission android:name="android.permission.INTERNET" />

3.cordova中使用替代插件cordova-plugin-advanced-http

该插件提供了与http服务器交互的安全策略,支持ios、android和browse
详见:npmjs.com/package/cordova-plugin-advanced-http

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值