true - angular 2 http withCredentials
withcredentials angular 4 (2)
Estoy tratando de usar withCredentials para enviar una cookie a mi servicio, pero no puedo descubrir cómo implementarla. Los documentos dicen "Si el servidor requiere credenciales de usuario, los habilitaremos en los encabezados de solicitud" Sin ejemplos. He intentado varias maneras diferentes pero todavía no enviará mi cookie. Aquí está mi código hasta ahora.
private systemConnect(token) {
let headers = new Headers();
headers.append(''Content-Type'', ''application/json'');
headers.append(''X-CSRF-Token'', token.token);
let options = new RequestOptions({ headers: headers });
this.http.post(this.connectUrl, { withCredentials: true }, options).map(res => res.json())
.subscribe(uid => {
console.log(uid);
});
}
Comenzando con Angular 4.3, se introdujeron HttpClient e interceptores.
Un ejemplo rápido se muestra a continuación:
@Injectable()
export class WithCredentialsInterceptor implements HttpInterceptor {
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
request = request.clone({
withCredentials: true
});
return next.handle(request);
}
}
constructor(
private http: HttpClient) {
this.http.get<WeatherForecast[]>(''api/SampleData/WeatherForecasts'')
.subscribe(result => {
this.forecasts = result;
},
error => {
console.error(error);
});
Intenta cambiar tu código como este
let options = new RequestOptions({ headers: headers, withCredentials: true });
y
this.http.post(this.connectUrl, <stringified_data> , options)...
como ve, el segundo parámetro debe ser datos para enviar (utilizando JSON.stringify
o simplemente ''''
) y todas las opciones en un tercer parámetro.