【问题标题】:Cross-origin AJAX request - XMLHttpRequest Exception 101跨域 AJAX 请求 - XMLHttpRequest 异常 101
【发布时间】:2017-04-29 01:00:21
【问题描述】:

我有带有 access origin *HTTP API(通过 POST 发送数据)的 Cordova 应用程序 (Cordova 6.0.0),其中 header Access-Control-Allow-Origin 设置为 *。 API 在域 https://api.stude.cz 上运行,因此您可以检查它(是的,我正在从应用程序调用 https)。好吧,当我尝试从应用程序中使用 jQuery 同步 AJAX 调用 api 时,我得到了

{
    "readyState":0,
    "status":0,
    "statusText":"Error: NETWORK_ERR: XMLHttpRequest Exception 101"
}

它是 JSON 字符串化的,因为 Android Studio 不支持在控制台中显示数组。你知道为什么吗?我花了很多时间在这个...

我的要求:

function apiRequest(type, action, params) {
    var returnValue = false;
    console.log('started');
    $.ajax({
        url: 'https://api.stude.cz/' + type + '/' + action,
        type: 'post',
        async: false,
        crossDomain: true,
        data: params,
        success: function(data){
            returnValue = data;
        },
        error: function(data){
            console.log(JSON.stringify(data));
            returnValue = JSON.stringify({status:"error"});
        }
    });
    return(returnValue);
}

我测试过:

type = user
action = login
params = {email: -some email-, password: -some password-}

【问题讨论】:

  • 您需要提供有关您正在做什么以及发生了什么的更多信息。确切地说,请求是什么样的?它是 POST 请求还是预检 OPTIONS 请求?您使用的是什么内容类型?等等。确切地说,响应是什么样的?服务器向客户端发回什么状态?
  • @Quetin 我会在一分钟内添加它。 :)
  • 另外请添加您正在使用的 Cordova 版本(cordova --version 会告诉您),因为如果您使用的是版本 5 或更高版本,您可能会遇到内容安全策略问题。
  • @SimonPrickett 好的,我添加了它,对你来说,我使用的是 6.0.0(最新)。

标签: javascript jquery ajax cordova cross-domain


【解决方案1】:

我通过删除和添加 Android 平台解决了这个问题。

cordova platform rm android
cordova platform add android

我认为问题出在插件白名单或类似的地方,但感谢您的帮助!

【讨论】:

    猜你喜欢
    • 2012-12-11
    • 2012-04-01
    • 1970-01-01
    • 2013-04-01
    • 2011-12-23
    • 2012-06-23
    • 2013-01-17
    • 2013-01-17
    • 2013-03-06
    相关资源
    最近更新 更多