我有一个使用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)
});
答案 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/