Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to prevent angular2 http library from removing special chars from login data?

I'm trying to use http library to issue a login request to a specific api. I'm getting a wrong credentials error because the data sent is encoded somehow and all the plus signs are changed to spaces. so if I enter [email protected] as an email, the console.log logs it correctly but it's sent as amani [email protected] in the formdata. The same thing happens for any data, not just the email, so if a users's password has a + in it, the data sent will be changed to.

This is my code:

let email = '[email protected]';
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);
  });
like image 970
Vanddel Avatar asked Jun 15 '16 12:06

Vanddel


1 Answers

You need to encode the string like shown in encodeURIComponent

let body = 'email='+encodeURIComponent('+email+'&password='+password);
like image 184
Günter Zöchbauer Avatar answered Oct 15 '22 06:10

Günter Zöchbauer