2016-07-08 6 views
2

ich eine post-Methode haben, die funktioniert und mein Token vom Server holenAngular 2 http.get sendet nicht das Token im Header

authenticate() { 
    let url = this.server + 'authenticate'; 
    let headers = new Headers({ 'Content-Type': 'application/json' }); 
    let options = new RequestOptions({ headers: headers }); 

    let body = JSON.stringify({ 
    'password': 'admin', 
    'rememberMe': true, 
    'username': 'admin' 
    }); 
    return this._http.post(url, body, options) 
    .map((res: Response) => res.json()) 
    .subscribe(result => this.token = result.id_token); 
} 

wo this.server eine Zeichenfolge ist die URL des Servers mit. und this._http ist nur ein Beispiel des Winkels Http

private _http: Http; 
constructor(http: Http) { 
    this._http = http; 
} 

und this.token ist nur ein leerer String private token: string;

aber alles funktioniert ganz gut, und ich bin immer die richtigen Token vom Server. Mein Problem ist, dass, wenn ich versuche, dieses Token in einer Get-Methode zu verwenden, es nicht funktioniert und ich einen 401 (nicht autorisierten) Fehler bekomme.

Mein Buggy get-Methode ist:

getData(src) { 
    let url = this.server + src; 
    let headers = new Headers({'Authorization': 'Bearer ' + this.token}); 
    return this._http.get(url, headers) 
    .map((res: Response) => res.json()) 
    .subscribe(res => console.log('res')); 
} 

Antwort

1

So war das Problem, dass ich {} um die Header hinzugefügt haben sollte, wenn ich sie geschickt. die get sollte es this._http.get(url, { headers })

1

Http.get nimmt eine URL-Zeichenfolge und eine optionale RequestOptionsArgs als Parameter. Das Wrappen des Headers in einem RequestOptions-Objekt sollte den Trick machen.

getData(src) { 
    let url = this.server + src; 
    let headers = new Headers({'Authorization': 'Bearer ' + this.token}); 
    let options = new RequestOptions({ headers: headers }); 
    return this._http.get(url, options) 
    .map((res: Response) => res.json()) 
    .subscribe(res => console.log('res')); 
} 
+0

Ich hatte tatsächlich so sein, und es gibt keinen Unterschied, was so überhaupt eine Rückkehr in die .map() –

+0

'.map ((res rufen hinzu: Response => zurück res.json ()) ' –

+0

Vielen Dank für Sie, aber das war nicht das Problem.Ich schrieb die Antwort, wenn Sie es wollen –