Aller au contenu
Apprendre.
  • M1 · toutes les matières15 matières : Préparation de données, API & sécurité, CI/CD, Docker, Merise, Dataviz, KNIME, ML appliqué : projet LoL, SQL & UML, SQL avancé, Machine Learning, Git, IA frugale & responsable, Qualité des données, MathématiquesAnnée
  • M2 · toutes les matières4 matières : Deep Learning, AI Act, Comex & Fundraising, Gouvernance & DataMeshAnnée
  • Deep LearningM2 · 4 modules · Réseaux de neurones, CNN, texte, modèles génératifs.Matière
  • Préparation de donnéesM1 · 3 modules · Nettoyer, transformer et fusionner des données avec Python.Matière
  • API & sécuritéM1 · 2 modules · Consommer, concevoir et sécuriser des API.Matière
  • CI/CDM1 · 1 module · Intégration et livraison continues.Matière
  • DockerM1 · 3 modules · Conteneurs, images, volumes, réseaux, Compose.Matière
  • MeriseM1 · 2 modules · Modéliser une base : MCD, MLD, MPD.Matière
  • DatavizM1 · 2 modules · Visualiser pour comprendre et décider.Matière
  • KNIMEM1 · 1 module · Explorer et nettoyer des données en workflow.Matière
  • ML appliqué : projet LoLM1 · 2 modules · Du besoin métier au POC de vision par ordinateur.Matière
  • SQL & UMLM1 · 3 modules · Modèles UML et requêtes SQL.Matière
  • SQL avancéM1 · 3 modules · Jointures, fenêtres, CTE, optimisation.Matière
  • Machine LearningM1 · 3 modules · Régression, classification, segmentation, projet.Matière

↑↓ naviguer↵ ouvre le résultat en surbrillanceesc fermer

Partie 5

Le CORS

Le CORS (Cross-Origin Resource Sharing) est un mécanisme des navigateurs pour autoriser ou restreindre les requêtes HTTP venant d'un autre domaine. Il s'appuie sur la Same-Origin Policy (SOP) : par défaut, un script d'une origine ne peut pas interagir librement avec les ressources d'une autre.

Une origine = schéma (http, https…) + nom de domaine + port. Deux ressources ont la même origine si ces trois composants sont identiques.

Exemple du cours : une page chargée depuis https://www.example.com ne peut pas faire de requête AJAX vers https://api.anotherdomain.com sans autorisation explicite. Besoin typique : une SPA sur https://frontend.com qui parle à une API sur https://api.backend.com.

Vérifie que tu as compris

Quelles pages ont la même origine que https://app.exemple.com:443 ?

Requête simple et requête prévol

Requête simple : GET ou POST sans en-tête particulier. Le serveur répond avec Access-Control-Allow-Origin ; absent ou différent de l'origine de la requête, le navigateur bloque la réponse.

Requête prévol (preflight) : pour les requêtes plus complexes (méthodes autres que GET/POST, en-têtes personnalisés), le navigateur envoie d'abord une requête OPTIONS.

OPTIONS /data HTTP/1.1
Origin: https://frontend.com
Access-Control-Request-Method: PUT

HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://frontend.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Content-Type
Access-Control-Max-Age: 86400

Si la réponse est favorable, la requête réelle est envoyée. Max-Age: 86400 met la réponse prévol en cache 1 jour (86 400 secondes).

Les en-têtes

En-têteRôle
Access-Control-Allow-Originorigines autorisées (domaine précis ou joker *)
Access-Control-Allow-Methodsméthodes HTTP autorisées
Access-Control-Allow-Headersen-têtes utilisables (Authorization, Content-Type)
Access-Control-Allow-Credentialsautorise cookies ou infos d'authentification (true)
Access-Control-Max-Agedurée de cache du prévol, en secondes

Vérifie que tu as compris

Un navigateur veut envoyer un PUT cross-origin. Que fait-il d'abord ?

CORS et sécurité

  • Access-Control-Allow-Origin: * : toutes les origines peuvent accéder aux ressources, dangereux sans précaution.
  • Allow-Credentials: true avec Allow-Origin: * : faille potentielle (cookies ou tokens envoyés à des origines non autorisées). Ne jamais combiner.
  • Restreindre précisément les origines ; tester avec curl, Postman ou la console du navigateur.

Le CORS est une protection appliquée par le navigateur ; elle ne remplace ni l'authentification ni l'autorisation (hors cours, mais déduit du principe : curl ne l'applique pas).

Vérifie que tu as compris

Quelle configuration le cours déconseille-t-il formellement ?