CORS
Signifie « Cross-Origin Resource Sharing ». CORS permet aux scripts des pages Web de demander des ressources à d'autres domaines. La plupart des navigateurs Web bloquent ce type de demande par défaut pour des raisons de sécurité.
Une page Web peut demander des ressources à un autre domaine, à condition que les demandes proviennent du HTML. Par exemple, la section <head> peut référencer des ressources provenant d'autres domaines, comme des fichiers CSS, des polices et des fichiers JS. Parmi les exemples, on trouve les scripts Google Analytics, les bibliothèques jQuery et les polices hébergées sur un autre serveur. De même, la section <body> peut demander des images à un CDN ou à un autre domaine. Les demandes de ressources provenant d'autres domaines dans le HTML ne nécessitent pas d'autorisation CORS.
Lorsqu'un script ou un élément iframe effectue une demande provenant d'un autre domaine, CORS est requis. Par exemple, une méthode AJAX — qui s'exécute après le chargement de la page — ne peut pas demander une ressource à un autre domaine. CORS remplace ce paramètre par défaut du navigateur et permet à la demande d'aboutir.
CORS est mis en œuvre à l'aide d'en-têtes HTTP de « contrôle d'accès ». L'administrateur d'un serveur peut ajouter ou modifier les en-têtes de réponse, qui sont envoyés au navigateur d'un client lorsqu'une page Web est consultée. Ces paramètres, qui peuvent être appliqués aux serveurs Apache et IIS, peuvent être spécifiques à un site ou s'appliquer à l'ensemble du serveur. Voici des en-têtes de demande et de réponse courants :
En-têtes de demande CORS :
- Origin
- Access-Control-Request-Method
- Access-Control-Request-Headers
En-têtes de réponse CORS :
- Access-Control-Allow-Origin
- Access-Control-Allow-Methods
- Access-Control-Expose-Headers
Exemple de CORS
Si un script de techterms.com demande une ressource à sharpened.com à l'aide d'une action GET, il peut envoyer les en-têtes de demande suivants :
Origin: https://techterms.com
Access-Control-Request-Method: GET
Pour autoriser la demande, sharpened.com peut répondre avec les en-têtes suivants :
Access-Control-Allow-Origin: https://techterms.com
Access-Control-Allow-Methods: GET
Access-Control-Allow-Origin peut être défini pour des domaines spécifiques ou utiliser un caractère générique représenté par un astérisque (*). Ce paramètre générique autorise les demandes de ressources provenant de tous les domaines, ce qui peut présenter un risque pour la sécurité. Access-Control-Allow-Methods peut être défini sur PUT, POST, DELETE et d'autres méthodes, ou utiliser un paramètre générique (*) qui autorise toutes les méthodes.
Testez vos connaissances