2016-06-15 11 views
7

Sto tentando di utilizzare la libreria http per inviare una richiesta di accesso a un'API specifica. Errore di credenziali errato perché i dati inviati sono codificati in qualche modo e tutti i segni più vengono modificati in spazi. quindi se inserisco [email protected] come email, il file console.log lo registra correttamente ma viene inviato come amani [email protected] nel formato. La stessa cosa accade per qualsiasi dato, non solo per l'e-mail, quindi se la password di un utente ha un + in esso, i dati inviati saranno cambiati in.come impedire alla libreria http angular2 di rimuovere caratteri speciali dai dati di accesso?

Questo è il mio codice:

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); 
    }); 

risposta

5

È necessario per codificare la stringa come mostrato in encodeURIComponent

let body = 'email='+encodeURIComponent('+email+'&password='+password); 
+0

potresti spiegare o aggiungere un collegamento al motivo per cui questo è successo in primo luogo? – Vanddel

+0

http://stackoverflow.com/questions/5450190/how-to-encode-the-plus-symbol-in-url "Il carattere + ha un significato speciale in un URL => significa spazio bianco." –

Problemi correlati