Как в интерсепторе ангулара получить куки ответа?

В Angular можно использовать интерсепторы для обработки HTTP-запросов и ответов. Интерсепторы позволяют вставлять логику до или после отправки запроса или получения ответа. В вашем случае, вы хотите получить куки из ответа сервера в интерсепторе.

Для этого, вам понадобится использовать HttpClient и HttpInterceptor из модуля @angular/common/http. По умолчанию, при отправке запроса, Angular не отправляет куки в заголовках HTTP. Однако, вы можете настроить HttpClient для включения этого поведения, используя опцию withCredentials.

Давайте создадим новый класс, который будет реализовывать интерфейс HttpInterceptor:

import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable()
export class CookieInterceptor implements HttpInterceptor {
    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        // Клонируем запрос с настройками
        const modifiedRequest = request.clone({
            withCredentials: true
        });

        // Передаем модифицированный запрос следующему обработчику
        return next.handle(modifiedRequest);
    }
}

Затем необходимо зарегистрировать этот интерсептор в вашем Angular приложении. Для этого добавьте его в провайдеры в вашем модуле:

import { NgModule } from '@angular/core';
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { CookieInterceptor } from './cookie.interceptor';

@NgModule({
    imports: [
        HttpClientModule
    ],
    providers: [
        { provide: HTTP_INTERCEPTORS, useClass: CookieInterceptor, multi: true }
    ]
})
export class AppModule { }

Теперь когда вы будете отправлять запросы с помощью HttpClient, интерсептор будет автоматически добавлять withCredentials: true в заголовки запроса, позволяя отправлять куки и получать их в ответе.

Например, в следующем примере мы отправляем GET-запрос на сервер и выводим полученные куки в консоль:

import { Component, OnInit } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';

@Component({
    selector: 'app-example',
    template: `
        <button (click)="getData()">Получить данные</button>
    `
})
export class ExampleComponent implements OnInit {
    constructor(private http: HttpClient) { }

    ngOnInit() { }

    getData() {
        this.http.get('/api/data').subscribe((response) => {
            console.log(response.headers.get('Set-Cookie'));
        });
    }
}

В примере мы используем httpClient.get для отправки GET-запроса на /api/data. В объекте response вы можете обратиться к заголовкам ответа с помощью метода headers.get('Set-Cookie'), чтобы получить куки.

Надеюсь, это поможет вам получить куки ответа в интерсепторе Angular.