You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cordova 11登录页AJAX请求遇Access-Control-Allow-Origin跨域错误

解决Cordova 11 Android应用跨域请求失败问题

核查config.xml核心跨域配置

确保config.xml的规则覆盖两个请求域名,重点检查:

  • 基础访问权限,可直接指定域名而非通配符(更严谨):
    <access origin="https://手机号验证域名.com" />
    <access origin="https://短信发送域名.com" />
    
  • 添加WebView导航允许规则:
    <allow-navigation href="https://手机号验证域名.com/*" />
    <allow-navigation href="https://短信发送域名.com/*" />
    
  • 若自定义了scheme和hostname,确认AJAX请求使用完整HTTPS域名,避免被解析为自定义协议(如app://localhost):
    <preference name="scheme" value="app" />
    <preference name="hostname" value="localhost" />
    

处理Chrome浏览器的CORS测试问题

Chrome浏览器的短信请求报CORS是浏览器同源策略限制导致,仅需在开发测试时绕过:

  • 启动Chrome时添加参数关闭同源策略:
    chrome.exe --disable-web-security --user-data-dir="C:/ChromeDevSession"
    
    注:仅用于本地开发测试,正式环境无需此操作。

排查移动端请求失败的具体原因

移动端手机号验证仅弹出“error”,需精准定位问题:

  • 用cordova-plugin-network-information插件检查设备网络状态:
    document.addEventListener("deviceready", () => {
        const networkState = navigator.connection.type;
        if (networkState === Connection.NONE) {
            alert('无网络连接');
        }
    }, false);
    
  • 在AJAX请求中添加详细错误捕获,通过Chrome远程调试查看控制台日志:
    $.ajax({
        url: 'https://手机号验证域名.com/api/check-phone',
        method: 'POST',
        data: {phone: '13xxxxxxxxx'},
        error: (xhr, status, error) => {
            console.log('请求状态:', status);
            console.log('错误详情:', error);
            console.log('响应内容:', xhr.responseText);
        }
    });
    
    可排查出DNS解析失败、证书不被信任、WebView安全策略限制等具体问题。

检查Android平台安全配置文件

重新添加Android平台后,自动生成的安全配置可能变化:

  • 打开res/xml/network_security_config.xml,添加允许访问的域名:
    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <domain-config cleartextTrafficPermitted="false">
            <domain includeSubdomains="true">手机号验证域名.com</domain>
            <domain includeSubdomains="true">短信发送域名.com</domain>
        </domain-config>
    </network-security-config>
    
  • 确认AndroidManifest.xml中正确引用该配置:
    <application android:networkSecurityConfig="@xml/network_security_config">
    

重置Cordova平台与插件

若以上操作无效,尝试彻底重置环境:

  1. 移除Android平台:
    cordova platform remove android
    
  2. 清理项目缓存:
    cordova clean
    
  3. 重新指定版本添加Android平台:
    cordova platform add android@11.0.0
    
  4. 重新安装所有依赖插件:
    cordova plugin add 你的插件列表
    

内容的提问来源于stack exchange,提问作者Abhilash Raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 05:07:15