Qu'est-ce que CORS?
sobes.tech IA
Réponse de l'IA
CORS (Cross-Origin Resource Sharing) — c'est un mécanisme permettant aux pages web de demander des ressources à partir d'un autre domaine, port ou protocole différent de celui de la page elle-même. Cela se fait à l'aide d'en-têtes HTTP supplémentaires.
Par défaut, les navigateurs appliquent la politique Same-Origin Policy (SOP), qui interdit aux scripts exécutés sur une page d'accéder aux données provenant d'une autre source (domaine, port, protocole). CORS assouplit cette politique de manière contrôlée, permettant au serveur d'autoriser explicitement les requêtes inter-domaines.
Comment fonctionne CORS :
- Requête simple : Si la requête répond à certains critères (par exemple, méthode GET ou POST, en-têtes spécifiques autorisés), le navigateur envoie la requête directement avec un en-tête supplémentaire
Originindiquant la source de la requête. Le serveur, en recevant cet en-tête, peut répondre avec l'en-têteAccess-Control-Allow-Originindiquant la source autorisée. - Preflight : Pour les requêtes "non simples" (par exemple, utilisant les méthodes
PUT,DELETE, ou avec des en-têtes personnalisés), le navigateur envoie d'abord une requête préliminaire (OPTIONS). Cette requête demande au serveur si la requête principale est autorisée. Le serveur répond avec des en-têtes indiquant les méthodes, en-têtes et sources autorisées. Si la préflight réussit, le navigateur envoie la requête réelle.
En-têtes principaux de CORS :
Origin: Envoyé par le navigateur dans la requête, indique la source (domaine, port, protocole) de la page qui effectue la requête.Access-Control-Allow-Origin: Envoyé par le serveur dans la réponse, indique la source pouvant recevoir la réponse. Peut être un domaine spécifique,*(toute source), ou généré dynamiquement en fonction de l'en-têteOrigin.Access-Control-Allow-Methods: Envoyé par le serveur en réponse à la préflight, indique les méthodes HTTP autorisées (GET, POST, PUT, DELETE, etc.).Access-Control-Allow-Headers: Envoyé par le serveur en réponse à la préflight, indique les en-têtes autorisés dans la requête.Access-Control-Allow-Credentials: Envoyé par le serveur dans la réponse, indique si les cookies et autres informations d'identification sont autorisés dans la requête.
Exemple d'en-têtes de réponse du serveur permettant des requêtes depuis https://example.com :
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Content-Type, Authorization
CORS est nécessaire pour le bon fonctionnement de nombreuses applications web utilisant des requêtes AJAX inter-domaines, telles que l'interaction avec des API, le chargement de polices, l'utilisation de Web Fonts avec CDN, etc. La configuration correcte de CORS sur le serveur est cruciale pour la sécurité et la fonctionnalité de l'application.