Model.save在Android上抛出404错误

时间:2017-04-18 05:09:22

标签: android jquery cordova backbone.js

我有一个使用Backbone.js的应用,我使用Cordova构建此应用。该应用程序执行登录请求,这在iOS和Web浏览器上工作正常,所以我知道该方法存在并正常工作。但是,对于Android,它返回“POST 404(未找到)”错误,即使代码是相同的。为什么它适用于iOS而不适用于Android?它会是代码问题还是构建问题?

这是我的要求:

return $.ajax(params);

//params
Object {headers: Object, type: "POST", dataType: "json", data: "
{"email":"username@domain.com","password":"password"}"…}
crossDomain :true
data :"{"email":"username@domain.com","password":"password"}"
dataType :"json"
error :function (resp)
headers: Object
  Accept : "*/*; charset=utf-8"
Content-Type :"application/json"
isLoginRequest: true
parse: true
processData: false
success: function (resp)
type :"POST"
url :"http://ip_address:port/api/login"
validate: true
__proto__ :Object

//method
var context, errors = [], model = new Model({}, {url: Config.login});
        model.set(data);
        if(!model.isValid()){
            context = _.extend({
                errors: model.validationError
            }, data);
            this.renderLoginView(context);
            return;
        }
        model.save(null, {
            isLoginRequest: true,
            success: _.bind(this.loginSuccess, this),
            error: _.bind(function(xhr, textStatus){
                //this is where it goes
                errors = {name: 'email/password', message: 'Invalid Username or Password'};
                context = _.extend({
                    errors: errors
                }, data);
                this.renderLoginView(context);
            },this)
        });

1 个答案:

答案 0 :(得分:1)

确保已安装Cordova Whitelist插件。

cordova plugin add cordova-plugin-whitelist

这是Android所必需的,而不是iOS或浏览器。

然后检查config.xml以查找这些行。

<access origin="*"/>

这将允许您的应用进行任何网络通信。为了更安全,您可以将其更改为。

<access origin="YOUR_URL/*" />

这将允许网络仅访问指定的URL和任何子域。

请参阅此处的文档。

https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-whitelist/