在前端,通过使用withCredentials和CredentialsInterceptor处理来自服务器的响应头,以便Angular可以设置会话Cookie。
例如,在Angular的http拦截器中添加以下代码:
import { Injectable } from '@angular/core'; import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http'; import { Observable } from 'rxjs/Observable';
@Injectable()
export class CredentialsInterceptor implements HttpInterceptor {
intercept(req: HttpRequest
然后,将CredentialsInterceptor添加到providers数组中,可以在app.module.ts的@NgModule装饰器中进行添加:
import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http'; import { AppComponent } from './app.component'; import { CredentialsInterceptor } from './credentials.interceptor';
@NgModule({ imports: [BrowserModule, HttpClientModule], declarations: [AppComponent], providers: [ { provide: HTTP_INTERCEPTORS, useClass: CredentialsInterceptor, multi: true } ], bootstrap: [AppComponent] }) export class AppModule {}
这样,Angular设置的会话Cookie就可以与前端会话保持一致了。