Model.save 在 Android 上抛出 404 错误

Model.save throws 404 error on Android

我有一个使用 Backbone.js 的应用程序,我使用 Cordova 构建了这个应用程序。该应用程序执行登录请求,这在 iOS 和网络浏览器上运行良好,因此我知道该方法存在并且有效。但是,对于 Android 它 returns 一个 "POST 404 (Not found)" 错误,即使代码是相同的。为什么它适用于 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)
        });

确保安装了 Cordova 白名单插件。

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/