Maison  >  Article  >  interface Web  >  Comment contrôler en amont une requête HTTP pour le partage de ressources entre origines croisées (CORS) ?

Comment contrôler en amont une requête HTTP pour le partage de ressources entre origines croisées (CORS) ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-18 21:54:31936parcourir

How to Preflight an HTTP Request for Cross-Origin Resource Sharing (CORS)?

CORS : contrôle en amont des requêtes HTTP

Le partage de ressources d'origine croisée (CORS) pose des limitations sur les requêtes HTTP inter-domaines. Pour relever ces défis, des demandes de contrôle en amont peuvent être utilisées. Dans ce contexte, les requêtes de contrôle en amont impliquent l'envoi d'une requête OPTIONS au serveur avant que la requête réelle ne soit effectuée. Cela permet au serveur de vérifier que la requête est autorisée et de fournir les autorisations nécessaires.

Comment contrôler en amont une requête

Le contrôle en amont d'une requête HTTP implique l'envoi d'une requête OPTIONS avec des en-têtes spécifiques, indiquant la méthode souhaitée et les en-têtes de la demande réelle. Le serveur répond avec des en-têtes accordant ou refusant les autorisations de demande.

Réponse de contrôle en amont côté serveur

Le serveur doit répondre aux demandes de contrôle en amont avec les en-têtes suivants :

  • Access-Control-Allow-Origin : Le domaine autorisé à effectuer la demande réelle.
  • Access-Control-Allow-Methods : Les méthodes autorisées pour la demande réelle.
  • Access-Control-Allow-Headers : Les en-têtes autorisés pour la demande réelle. Cet en-tête ne peut pas être « * ».

Demande de contrôle en amont côté client

Dans jQuery, la technique suivante peut être utilisée pour contrôler en amont une demande :

<code class="javascript">$.ajax({
  url: yourUrl,
  type: 'OPTIONS',
  success: function(data, status) {
    // Extract and verify the preflight response headers
    var origin = data.getResponseHeader('Access-Control-Allow-Origin');
    var methods = data.getResponseHeader('Access-Control-Allow-Methods');
    var headers = data.getResponseHeader('Access-Control-Allow-Headers');
    // Proceed with the actual request only if permissions are granted
    if (origin === 'http://mydomain.com' && methods.indexOf('POST') !== -1 && headers.indexOf('X-Custom-Header') !== -1) {
      // Make the actual request
    } else {
      // Handle the error and deny the request
    }
  }
});</code>

En mettant en œuvre ces modifications, vous pouvez vous assurer que vos requêtes HTTP inter-domaines sont vérifiées en amont et peuvent se poursuivre sans l'intervention du navigateur.

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