我在Ionic 4项目中使用@ ionic-native / http通过通过POST方法发送带有UserId和Password的主体以及带有'Content-Type':'application / json'的标头来登录用户。它在android上可以正常工作,但在iOS上它会显示http 400错误。
Dependencies:
"@ionic-native/http": "^5.3.0",
"cordova-plugin-advanced-http": "^2.0.9",
我厌倦了使用@ angular / http,但在浏览器,android和iOS上却给出了CORS错误。而且我无法更改服务器端代码来启用CORS。
代码:
import { HTTP } from '@ionic-native/http/ngx';
// Login method
async login(userId, password) {
// login user
const httpBody = {
'UserId': userId,
'Password': btoa(password)
};
const httpHeader = {
'Content-Type': 'application/json',
};
const user = await this.http.post(this.loginURL, httpBody, httpHeader);
return JSON.parse(user.data);
}
状态码为200的预期结果响应
使用StatusCode 400的实际结果响应
我曾经遇到同样的问题;就我而言,我通过将数据序列化器设置为'utf8'并将Content-Type标头设置为'application / x-www-form-urlencoded'
this.http.setDataSerializer('utf8');
const httpHeader = {
'Content-Type': 'application/application/x-www-form-urlencoded'
};