Interceptores HTTP funcionales

Avanzado
Angular
Angular
Actualizado: 04/05/2026
sequenceDiagram
    participant Comp as Componente
    participant Svc as UserService
    participant HC as HttpClient
    participant Auth as authInterceptor
    participant Log as loggingInterceptor
    participant Err as errorInterceptor
    participant API
    Comp->>Svc: getUser()
    Svc->>HC: http.get("'/api/users/me'")
    HC->>Auth: HttpRequest
    Auth->>Auth: añade Bearer token
    Auth->>Log: HttpRequest +Authorization
    Log->>Log: timestamp inicio
    Log->>Err: HttpRequest
    Err->>API: GET /api/users/me
    API-->>Err: 401 Unauthorized
    Err->>Err: si 401 redirige login
    Err-->>Log: error / response
    Log->>Log: log latencia
    Log-->>Auth: response
    Auth-->>HC: response
    HC-->>Svc: Observable user
    Svc-->>Comp: user

Qué es un interceptor

Un interceptor en Angular permite interceptar peticiones HTTP antes de que sean enviadas al backend. 

Esto puede utilizarse para agregar información extra en las cabeceras de las peticiones HTTP que se envían al backend y de esta forma ofrecer información extra.

Un claro ejemplo es el de enviar el token JWT obtenido tras un login al backend en cada petición. Esto permite al backend conocer qué usuario es el que está navegando.

Crear un interceptor funcional

Ejecutar el comando:

ng generate interceptor authentication/jwt

Esto genera el archivo jwt.interceptor.ts con este contenido:

import { HttpInterceptorFn } from '@angular/common/http';


export const jwtInterceptor: HttpInterceptorFn = (req, next) => {

  return next(req);
};

Desarrollar el interceptor

Agregar código en el interceptor que permita añadir una cabecera Authorization en las peticiones HTTP.

¿Para qué sirve la cabecera Authorization? Para enviar información de la autenticación del usuario al backend, como por ejemplo el token JWT, de este modo el backend puede conocer qué usuario es el que está navegando.

Clonamos la request HTTP agregándole la cabecera mencionada:

import { HttpInterceptorFn } from '@angular/common/http';


export const jwtInterceptor: HttpInterceptorFn = (req, next) => {
  const token = localStorage.getItem("jwt_token");
  if(token) {
    req = req.clone({
      headers: req.headers.set('Authorization', `Bearer ${token}`)
    });
  }
  return next(req);
};

Activar el interceptor

Para poder utilizar el interceptor debemos activarlo a nivel de HttpClient para que se utilice en las peticiones HTTP enviadas al backend.

En el archivo app.config.ts agregamos la configuración global del HttpClient con el interceptor:

import { ApplicationConfig } from '@angular/core';
import { provideRouter } from '@angular/router';

import { routes } from './app.routes';
import { provideHttpClient, withInterceptors } from '@angular/common/http';
import { jwtInterceptor } from './authentication/jwt.interceptor';

export const appConfig: ApplicationConfig = {
  providers: [
    provideRouter(routes),
    // Configurar HttpClient globalmente con el interceptor:
    // agregar jwtInterceptor para enviar token JWT a backend en peticiones HTTP
    provideHttpClient(withInterceptors([jwtInterceptor])),
  ]
};

En Angular 21, HttpClient se configura globalmente con provideHttpClient() en app.config.ts. Los componentes no necesitan importar HttpClientModule ya que esto sobreescribiría la configuración global.

Los componentes simplemente inyectan HttpClient usando inject():

@Component({
  selector: 'app-book-list',
  imports: [RouterLink, NgbAlertModule],
  templateUrl: './book-list.component.html',
  styleUrl: './book-list.component.css'
})
export class BookListComponent {
  private httpClient = inject(HttpClient);
}

Comprobar funcionamiento interceptor

Teniendo frontend, backend y base de datos en ejecución, realizaríamos un login con las credenciales de un usuario y el backend generaría un token JWT.

El AuthenticationService guarda el token en el localStorage.

El interceptor carga el token JWT del localStorage en cada petición HTTP.

Para verificar que se carga correctamente abrimos la consola del navegador y comprobamos que aparece el token en las cabeceras de la petición (request).

Token JWT en cabecera Authorization

Verificamos que aparece la cabecera Authorization con el token.

IMPORTANTE: hay que iniciar sesión para que se haya generado el token y navegar para que se lancen peticiones al backend para traer datos. No confundir las cabeceras de la respuesta con las cabeceras de la petición.

Alan Sastre - Autor del tutorial

Alan Sastre

Ingeniero de Software y formador, CEO en CertiDevs

Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, Angular es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.

Más tutoriales de Angular

Explora más contenido relacionado con Angular y continúa aprendiendo con nuestros tutoriales gratuitos.

Aprendizajes de esta lección