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);
});
You need to encode the string like shown in encodeURIComponent
let body = 'email='+encodeURIComponent('+email+'&password='+password);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With