Cordova 10配置allowList仍出现CORS问题,已设置<access origin="*"/>如何解决?
Cordova Android 10 CORS报错解决方案
核心原因
Cordova Android 10 除了将白名单能力内置到核心外,还默认收紧了WebView的安全限制,仅配置<access origin="*" />无法覆盖所有场景的权限放行。
修复步骤
1. 新增config.xml配置
在你的config.xml中添加以下配置:
<!-- 开启不安全文件模式,禁用WebView本地文件源限制,解决本地页面发请求的CORS问题 --> <preference name="AndroidInsecureFileModeEnabled" value="true" /> <!-- 放行所有导航跳转权限 --> <allow-navigation href="*" /> <!-- 放行所有系统意图调用权限 --> <allow-intent href="*" />
如果你的应用需要访问HTTP明文接口,还需要在<platform name="android">块中添加明文流量权限,同时需要确保根<widget>标签已经添加xmlns:android="http://schemas.android.com/apk/res/android"属性:
<edit-config file="AndroidManifest.xml" mode="merge" target="/manifest/application"> <application android:usesCleartextTraffic="true" /> </edit-config>
2. 自定义WebView安全配置(可选,适用于配置不生效场景)
在Cordova主Activity的onCreate生命周期中添加WebView权限配置:
WebView webView = (WebView) appView.getView(); WebSettings webSettings = webView.getSettings(); // 允许从文件URL加载的内容访问其他文件URL webSettings.setAllowFileAccessFromFileURLs(true); // 允许从文件URL加载的内容访问所有源 webSettings.setAllowUniversalAccessFromFileURLs(true);
3. 规避WebView CORS限制方案
如果服务端无法配置CORS响应头,可使用原生请求插件规避WebView的CORS校验:
- 安装
cordova-plugin-advanced-http插件,所有跨域请求走原生层发送,不会触发WebView的CORS拦截规则。
验证步骤
完成配置后执行以下操作重新构建项目:
- 执行
cordova platform rm android && cordova platform add android重新添加安卓平台 - 执行
cordova clean清理旧构建缓存 - 重新打包测试即可
内容的提问来源于stack exchange,提问作者Mahdi Soltani
相关产品推荐
相关产品推荐

