webentwicklung-frage-antwort-db.com.de

Setzen Sie Cookie in den Request Headers Angular2

Ich bin neu in angle2. Mein Server (spring) antwortet auf die Authentifizierung mit einem Set-Cookie-Wert in seinen Antwort-Headern.

Wie setze ich dieses Cookie auf die Anforderungsheader für die nächsten API-Aufrufe?

Ich habe viel gesucht, aber keine passende Lösung gefunden.

10
Sibiraj

Cookies werden automatisch an jeden Anruf angehängt, den Sie tätigen, nachdem ich ihn für Ihre Domain gespeichert habe. Du machst etwas anderes falsch. Wenn Sie einen automatischen Mechanismus zum Anhängen von Authentifizierungsdaten an REST Aufrufe erstellen möchten, lesen Sie dieses Tutorial, in dem Sie einen benutzerdefinierten HttpInterceptor erstellen:

https://medium.com/aviabird/http-interceptor-angular2-way-e57dc2842462

4
Mario Petrovic

Als Teil der http.get() oder http.post() -Methoden können Sie RequestOptionsArgs angeben

Verwenden Sie das Headers in dem RequestOptionsArgs, um den Auth-Header anzugeben, den Sie benötigen.

Als grobes Beispiel siehe unten:

class PeopleComponent {
  constructor(http: Http) {  
    let customHeaders: Headers = new Headers();
    customHeaders.append('myHeaderName', 'myHeaderValue');
    
    http.get('http://my.web/service', { headers: customHeaders })       
      .map(res => res.json())
      .subscribe(people => this.people = people);
  }
}
9
aaron-bond

In einem CORS-Szenario müssen Sie die withCredentials-Eigenschaft in den RequestOptions auf true setzen. Im Folgenden finden Sie einen Ausschnitt darüber, wie ich ihn in meinem HTTP-Helfer implementiert habe:

get(resource: string) {
  return this.http.get(`/api/${resource}`, this.getRequestOptions())
    .map(result => result.json())
    .catch(e => e.status === 401 ? Observable.throw('Unauthorized') : e.json());
}

post(resource: string, body: any) {
  return this.http.post(`/api/${resource}`, body, this.getRequestOptions())
    .map(result => result.json())
    .catch(e => e.status === 401 ? Observable.throw('Unauthorized') : e.json());
}

private getRequestOptions() {
  const headers = new Headers({
    'Content-Type': 'application/json',
  });

  return new RequestOptions({headers: headers, withCredentials: true});
}
1
jberndsen