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/
我有一个使用 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/