Maison > interface Web > js tutoriel > 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
Libérer: 2024-10-18 21:54:31
original
1048 Les gens l'ont consulté

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>
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal