Ajax json跨域请求不使用cordova应用程序

时间:2016-01-28 13:15:44

标签: android jquery json ajax cordova

我正在做cordova android应用程序。在此我想要用户登录功能,该功能由REST API验证。但在移动设备中,它提供了ajax错误代码' 0'和thrownError空白。我已将我的设备连接到桌面系统以测试应用程序。

在桌面浏览器中,它运行正常。 我使用了以下代码,

apiurl = "http://xxx.xxx.xxx.xxx/restapi/"; 
$.ajax({
                url: apiurl+'user-signin/login',
                type: 'POST',
                dataType :'json'
                crossDomain: true,
                beforeSend:function(){ $.mobile.loading( 'show' ); },
                complete: function() { $.mobile.loading( 'hide' )  }, 
                success: function (res) {
                    alert(res.status);
                    if(res.status == "success") {
                        goInsert(res.result.user_id, res.result.user_name, res.result.user_password);
                        window.location="dashboard.html";
                    } else if(res.status == "failed") {
                        alert(res.msg);
                        //alert(message[res.msg]);
                    } 
                },
                error: function(xhr, textStatus, thrownError) {
                    alert(xhr.status+":"+textStatus+":"+thrownError);
                    navigator.app.exitApp();
                },
                data: new FormData($('#loginfrm')[0]),
                cache: false,
                contentType: false,
                processData: false

            });

我添加了"标题(" Access-Control-Allow-Origin:*"); "在我的休息时间。

我也使用了数据类型" jsonp",但它也不适用于我。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

如果您使用的是Cordova 5,则可能需要查看内容安全策略,该政策是index.html中的元标记 - 默认情况下,除非您将其修改为包含,否则不会允许此操作您的API网址。

尝试修改元标记(如果不存在则添加一个),如下所示:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; connect-src http://xxx.xxx.xxx.xxx/">

要深入了解此结帐http://moduscreate.com/cordova-5-ios-9-security-policy-changes/