Soy nuevo en angular2. Mi servidor (primavera) responde a la autenticación con un valor de cookie establecido en sus encabezados de respuesta.
¿Cómo configurar esa cookie en los encabezados de solicitud para las próximas llamadas a la API?
He buscado mucho, pero no puedo encontrar una solución adecuada.
Como parte de los http.get() o http.post() , puede especificar RequestOptionsArgs
Use los Headers en RequestOptionsArgs para especificar el encabezado de autenticación que necesita.
Como ejemplo aproximado, véase a continuación:
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); } }Las cookies se adjuntan automáticamente a cada llamada que realiza después de que las guardé para su dominio. Estás haciendo algo más mal. En caso de que desee crear un mecanismo automático para adjuntar datos de autenticación a las llamadas REST, consulte este tutorial que crea un HttpInterceptor personalizado:
https://medium.com/aviabird/http-interceptor-angular2-way-e57dc2842462
En el caso de un escenario CORS, deberá agregar la propiedad withCredentials establecida en true en RequestOptions. A continuación se muestra un fragmento de cómo lo he implementado en mi asistente HTTP:
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}); }