Maison  >  Article  >  interface Web  >  Quand CORS utilise-t-il une demande de contrôle en amont dans les scénarios inter-domaines ?

Quand CORS utilise-t-il une demande de contrôle en amont dans les scénarios inter-domaines ?

DDD
DDDoriginal
2024-10-18 21:48:30374parcourir

When Does CORS Use a Preflight Request in Cross-Domain Scenarios?

CORS : Comprendre la demande de « contrôle en amont » pour les requêtes inter-domaines

Le partage de ressources d'origine croisée (CORS) pose des défis lors de la création de HTTP requêtes sur tous les domaines. Pour remédier à ces limitations, des requêtes de contrôle en amont ont été introduites comme solution de contournement.

Demande de contrôle en amont expliquée

Les requêtes de contrôle en amont sont des requêtes OPTIONS qui précèdent les requêtes réelles (telles que GET ou POST ) et servent à négocier avec le serveur concernant les autorisations de la demande. Ces requêtes incluent deux en-têtes supplémentaires :

  • Access-Control-Request-Method : Spécifie la méthode de la requête réelle.
  • Access-Control -Request-Headers : Répertorie les en-têtes qui seront inclus dans la requête réelle.

Configuration de la réponse du serveur

Pour gérer les requêtes de contrôle en amont, le serveur doit répondre avec les en-têtes suivants :

  • Access-Control-Allow-Origin : Accorde l'autorisation à l'origine spécifiée dans la demande.
  • Access-Control-Allow-Methods : Spécifie les méthodes autorisées pour la requête réelle.
  • Access-Control-Allow-Headers : Répertorie les en-têtes que le navigateur est autorisé à afficher envoyer la demande réelle.

Mise en œuvre du contrôle en amont côté client

Pour que la demande de contrôle en amont réussisse, le client doit inclure les modifications suivantes :

  • Envoyer une demande OPTIONS : Avant la demande proprement dite, envoyez une demande OPTIONS avec les en-têtes Access-Control-Request-* appropriés.
  • Inclure les éléments nécessaires headers : Assurez-vous que la demande réelle contient tous les en-têtes spécifiés dans l'en-tête de réponse Access-Control-Allow-Headers.

Exemple :

Envisagez une demande de contrôle en amont pour une requête POST permettant de récupérer des données à partir d'une URL distante.

Demande de contrôle en amont :

  • Origine : https://votredomaine.com
  • Access-Control-Request-Method : POST
  • Access-Control-Request-Headers : X-Custom-Header

Réponse du serveur (en supposant que le POST et X-Custom-Header sont autorisés) :

  • Access-Control-Allow-Origin : https://yourdomain.com
  • Access-Control-Allow-Methods : POST
  • Access-Control-Allow-Headers : X-Custom-Header

Demande réelle :

  • Origine : https://votredomaine.com
  • Méthode : POST
  • X-Custom-Header : valeur

En suivant ces étapes, vous pouvez efficacement contrôler en amont les requêtes HTTP pour surmonter les limitations inter-domaines à l'aide de CORS.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn