Cordova Android 10环境下Allow List CORS报错问题求助
Cordova Android 10+ CORS报错解决方案
- 补全config.xml配置
现有配置缺少allow-navigation规则,该规则控制WebView可导航的域名范围,新增如下配置:<allow-navigation href="*" /> <!-- 如果需要兼容file协议加载本地资源,新增以下偏好设置 --> <preference name="AndroidInsecureFileModeEnabled" value="true" /> - 修正后端CORS配置
现有配置未处理OPTIONS预检请求,且Origin规则可能和实际请求不匹配,调整PHP接口代码:// 允许请求的Origin,调试阶段可动态获取适配,生产环境建议限制为白名单域名 if (isset($_SERVER['HTTP_ORIGIN'])) { header("Access-Control-Allow-Origin: " . $_SERVER['HTTP_ORIGIN']); } header("Access-Control-Allow-Headers: Authorization, Content-Type"); header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS"); header('Content-Type: application/json; charset=utf-8'); // 如果请求带身份凭证(Cookie、Authorization头),新增以下配置 header("Access-Control-Allow-Credentials: true"); // 处理OPTIONS预检请求,直接返回204无内容即可 if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') { http_response_code(204); exit; } - 新增WebView跨域权限配置
在Cordova主Activity的onCreate方法中添加WebView设置,允许跨域访问:WebView webView = (WebView) appView.getView(); WebSettings webSettings = webView.getSettings(); webSettings.setAllowUniversalAccessFromFileURLs(true); webSettings.setAllowFileAccessFromFileURLs(true); - 调试排查建议
开启WebView远程调试功能,连接Chrome浏览器输入chrome://inspect查看具体CORS报错信息,根据报错内容针对性调整规则,比如是否是请求方法不被允许、自定义头被拦截等。
内容的提问来源于stack exchange,提问作者Jaime Velasco
相关产品推荐
相关产品推荐

