Qu’est-ce que les CORS ?
Mécanisme de sécurité navigateur qui contrôle les requêtes cross-origin pour éviter l’accès non autorisé à une API.
Quel problème CORS résout-il ?
Il empêche qu’un site tiers envoie des requêtes HTTP vers ton API sans autorisation, limitant les risques de CSRF et d’accès illégitime aux ressources.
Quand CORS s’active-t-il ?
Lorsqu’une requête frontend est envoyée vers un backend situé sur une autre origine (domaine, port ou protocole différents).
Qu’est-ce qu’une “preflight request” ?
Requête OPTIONS envoyée automatiquement par le navigateur pour vérifier si l’origine, la méthode et les headers sont autorisés par l’API.
Comment le serveur autorise une origine ?
En renvoyant des en-têtes CORS (Access-Control-Allow-Origin, Allowed-Methods, etc.) indiquant explicitement les origines et méthodes permises.
Que se passe-t-il si CORS n’est pas configuré ?
Le navigateur bloque la réponse même si le backend a bien répondu, provoquant une erreur CORS côté console frontend.
Pourquoi configurer CORS côté backend ?
Parce que la validation des origines ne peut pas être déléguée au frontend : seule l’API détermine qui peut y accéder.
Configuration CORS sans Spring Security ?
Utilisation d’un WebMvcConfigurer global pour définir :
origines autorisées
méthodes autorisées
mapping des routes à protéger
Pourquoi la config WebMvcConfigurer est ignorée avec Spring Security ?
Parce que Spring Security implémente sa propre couche CORS, qui prend la priorité sur la configuration MVC standard.
Configuration CORS avec Spring Security ?
Déclaration d’un bean CorsConfigurationSource qui définit :
- origin(s) autorisée(s)
- méthodes HTTP permises
- headers autorisés
- scope des routes concernées
Où placer la configuration CORS avec Spring Security ?
Dans la classe SecurityConfig, au sein du package security.
CORS et sécurité backend : rôle principal ?
Contrôler qui peut accéder à l’API, et avec quelles méthodes, afin de protéger les endpoints exposés.