- CORS (Cross-Origin Resource Sharing)
- Partage de Ressources Cross-Origin, standard W3C, qui permet au serveur de déclarer quelles origines peuvent accéder aux ressources via de nouveaux champs d'en-tête HTTP, c'est la solution officielle des navigateurs modernes pour résoudre les problèmes cross-origin.
- Politique de Même Origine (Same-Origin Policy)
- Mécanisme de sécurité central du navigateur ; seulement quand protocole, domaine et port sont exactement identiques on considère comme même origine, et JavaScript d'origines différentes par défaut ne peut pas lire les ressources de l'autre.
- Requête Preflight (Preflight Request)
- Requête avec la méthode OPTIONS que le navigateur envoie automatiquement d'abord pour les requêtes cross-origin non simples, utilisée pour demander au serveur s'il autorise la requête réelle suivante ; ce n'est qu'après avoir réussi le preflight que la requête réelle est envoyée.
- Requête Simple (Simple Request)
- Requête cross-origin qui remplit des conditions spécifiques (méthode GET/HEAD/POST, seulement en-têtes sécurisés, Content-Type spécifique), qui n'a pas besoin d'envoyer de preflight et envoie directement la requête réelle.
- Access-Control-Allow-Origin (ACAO)
- En-tête de réponse CORS principal, spécifie l'origine autorisée à accéder à la ressource, peut être un URI d'origine spécifique ou joker *, avec identifiants on ne peut pas utiliser *.
- Access-Control-Allow-Methods (ACAM)
- En-tête de réponse preflight, liste toutes les méthodes HTTP prises en charge par le serveur, plusieurs méthodes séparées par virgule.
- Access-Control-Allow-Headers (ACAH)
- En-tête de réponse preflight, liste tous les champs d'en-tête de requête autorisés par le serveur ; les en-têtes personnalisés envoyés par le frontend doivent être déclarés ici.
- Access-Control-Allow-Credentials (ACAC)
- En-tête de réponse, valeur booléenne true indique qu'il est permis d'emporter des identifiants comme Cookie et Authorization dans les requêtes cross-origin ; dans ce cas Allow-Origin ne peut pas être *.
- Access-Control-Max-Age (ACMA)
- En-tête de réponse preflight, spécifie la durée de cache du résultat preflight en secondes ; une configuration raisonnable peut réduire les requêtes OPTIONS en améliorant les performances.
- Vary: Origin
- En-tête de réponse, dit au CDN/proxy que le contenu de la réponse varie selon l'en-tête Origin, lors de la mise en cache il faut inclure Origin comme clé de cache pour éviter le désordre de cache des réponses cross-origin.
- En-têtes de requête de liste sécurisée CORS (CORS-safelisted request headers)
- En-têtes de requête qui peuvent être envoyés sans avoir besoin de les déclarer dans Allow-Headers, incluant Accept, Accept-Language, Content-Language, Content-Type (valeurs spécifiques), etc.
- Noms d'en-tête interdits (Forbidden header name)
- En-têtes de requête que le navigateur interdit à JavaScript de définir par programmation, comme Host, Connection, Cookie, Origin, etc. ; ces en-têtes sont contrôlés automatiquement par le navigateur.
- Requête avec identifiants (Credentialed Request)
- Requête cross-origin qui comporte des identifiants d'identité comme Cookie, informations d'authentification HTTP, certificats client TLS ; nécessite que frontend et backend configurent conjointement withCredentials et Allow-Credentials.
- Access-Control-Expose-Headers
- En-tête de réponse, liste les en-têtes de réponse auxquels JavaScript peut accéder ; par défaut seulement quelques en-têtes basiques sont accessibles, les en-têtes personnalisés doivent être déclarés ici.
- Méthode OPTIONS
- Une des méthodes HTTP, utilisée pour obtenir les options de communication prises en charge par le serveur ; CORS l'utilise pour envoyer des requêtes preflight, demandant au serveur les méthodes, en-têtes, identifiants autorisés.
- En-tête de requête Origin
- En-tête de requête ajouté automatiquement par le navigateur, indique de quelle origine provient la requête actuelle (protocole+domaine+port) ; le serveur détermine s'il autorise le cross-origin selon cet en-tête.
- Attribut crossorigin
- Attribut d'éléments HTML (comme script, img, link), utilisé pour spécifier si on active le chargement de ressources avec CORS ; les valeurs sont anonymous (sans identifiants) et use-credentials (avec identifiants).
- Mode de requête no-cors
- Un mode de l'API fetch, qui permet d'envoyer des requêtes cross-origin mais ne peut envoyer que des requêtes simples et JavaScript ne peut pas lire le contenu de la réponse, équivalent à envoyer une requête opaque (Opaque Response).