Skip to content

Gestion CORS

@duplojs/http/cors ajoute automatiquement les entêtes CORS sur les réponses classiques et crée une route OPTIONS /* pour répondre aux preflight request.

Exemple complet

ts
import { 
createHub
} from "@duplojs/http";
import {
corsPlugin
} from "@duplojs/http/cors";
export const
hub
=
createHub
({
environment
: "DEV" })
.
plug
(
corsPlugin
({
allowOrigin
: [
"https://app.example.com", "https://admin.example.com", ],
allowHeaders
: ["content-type", "authorization"],
exposeHeaders
: ["x-request-id", "x-rate-limit-remaining"],
allowMethods
: true,
credentials
: true,
maxAge
: 600,
}), );

Dans cet exemple :

  • allowOrigin limite les origines autorisées.
  • allowHeaders déclare les entêtes HTTP acceptés pendant la pré-vérification.
  • exposeHeaders rend certains entêtes lisibles côté navigateur.
  • allowMethods: true génère automatiquement access-control-allow-methods à partir des routes enregistrées dans le Hub.
  • credentials: true ajoute access-control-allow-credentials: true pour les credentials.
  • maxAge définit la durée de cache de la pré-vérification en secondes.

Interface des paramètres

ts
interface CorsPluginParams {
	readonly allowOrigin?:
		| string
		| RegExp
		| readonly string[]
		| ((origin: string) => boolean | Promise<boolean>)
		| true;
	readonly allowHeaders?: string | readonly string[] | true;
	readonly exposeHeaders?: string | readonly string[];
	readonly maxAge?: number;
	readonly credentials?: boolean;
	readonly allowMethods?: RequestMethods | readonly RequestMethods[] | true;
}

Il faut fournir au moins une option au plugin.

Détail des options

  • allowOrigin accepte une origine unique, une liste, une expression régulière, une fonction de validation, ou true pour autoriser toutes les origines.
  • allowHeaders accepte une chaîne, une liste, ou true pour tous les headers.
  • exposeHeaders liste les entêtes que le navigateur pourra lire après la requête.
  • allowMethods accepte une méthode, une liste, ou true pour calculer automatiquement les méthodes autorisées par chemin.
  • credentials active le partage des cookies et autres identifiants d'authentification.
  • maxAge contrôle la mise en cache de la réponse OPTIONS.

Diffusé sous licence MIT.