如何防止angular2 http库从登录数据中删除特殊字符?

时间:2016-06-15 12:08:20

标签: http typescript angular

我尝试使用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);
  });

2 个答案:

答案 0 :(得分:5)

您需要对encodeURIComponent

中显示的字符串进行编码
let body = 'email='+encodeURIComponent('+email+'&password='+password);

答案 1 :(得分:0)

加号表示它没有被角度正确编码,这是一个已知的错误;见:https://github.com/angular/angular/issues/11058