Spring Boot : écrire le serveur (école d'ingénieur) · Chapitre 9 · Exercice de TD
Toutes les origines, avec identifiants
Le client Vue face au serveur · niveau 2
Énoncé
Que se passe-t-il si l'on écrit
config.setAllowedOrigins(List.of("*"));
config.setAllowCredentials(true);
Le constater par un test et expliquer pourquoi la règle existe.
Corrigé
@Test
void etoileEtIdentifiantsSontIncompatibles() {
CorsConfiguration config = new CorsConfiguration();
config.setAllowedOrigins(List.of("*"));
config.setAllowCredentials(true);
assertThatThrownBy(config::validateAllowCredentials)
.isInstanceOf(IllegalArgumentException.class)
.satisfies(e -> System.out.println("Message : " + e.getMessage()));
}
Le message affiché pendant le test :
Message : When allowCredentials is true, allowedOrigins cannot contain the special value "*" since that cannot be set on the "Access-Control-Allow-Origin" response header. To allow credentials to a set of origins, list them explicitly or consider using "allowedOriginPatterns" instead.
Le protocole lui-même interdit Access-Control-Allow-Origin: * quand la requête porte des identifiants (cookies, en-tête Authorization) : sinon, n'importe quel site pourrait agir au nom de l'utilisateur connecté et lire les réponses. Spring refuse la configuration dès qu'une requête la met en œuvre, plutôt que de laisser le navigateur échouer en silence.
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.