我尝试使用http库向特定的api发出登录请求。 我收到错误的凭据错误,因为发送的数据以某种方式编码,所有加号都更改为空格。 所以如果我输入amani+salah@gamil.com作为电子邮件,console.log会正确记录它,但它会在formdata中以amani salah@gmail.com的形式发送。 任何数据都会发生同样的情况,而不仅仅是电子邮件,因此如果用户的密码中包含+,则发送的数据将更改为。
这是我的代码:
let email = 'xxxx@example.com';
let password = 'xxxx';
let body = 'email='+email+'&password='+password;
console.log(body);
let headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
let options = new RequestOptions({ headers: headers });
let url = this.base_url + '/login';
this.http.post(url, body, {headers: headers})
.map(res => res.json())
.subscribe(data => {
this.data = data;
resolve(this.data);
});
答案 0 :(得分:5)
let body = 'email='+encodeURIComponent('+email+'&password='+password);
答案 1 :(得分:0)
加号表示它没有被角度正确编码,这是一个已知的错误;见:https://github.com/angular/angular/issues/11058