angular 2 http withCredentials
Starting with Angular 4.3, HttpClient and Interceptors were introduced.
A quick example is shown below:
@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);
});
Remember to provide the interceptor to your app module, as the article says:
In order to activate the interceptor for our application we need to provide it to the main application module AppModule in file app.module.ts:
Your @NgModule
will need to include this in its providers:
...
providers: [{
provide: HTTP_INTERCEPTORS,
useClass: WithCredentialsInterceptor,
multi: true
}],
...
Creating an Interceptor
would be good idea to inject stuff into header across the application. On the other hand, if you are looking for a quick solution that needs to be done on a per request level, try setting withCredentials
to true
as below
const requestOptions = {
headers: new HttpHeaders({
'Authorization': "my-request-token"
}),
withCredentials: true
};
Try to change your code like this
let options = new RequestOptions({ headers: headers, withCredentials: true });
and
this.http.post(this.connectUrl, <stringified_data> , options)...
as you see, the second param should be data to send (using JSON.stringify
or just ''
) and all options in one third parameter.