Maison >interface Web >js tutoriel >Comment les demandes d'options de contrôle en amont permettent-elles l'accès HTTP inter-domaines aux services WCF ?

Comment les demandes d'options de contrôle en amont permettent-elles l'accès HTTP inter-domaines aux services WCF ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-18 21:57:30483parcourir

How Do Preflight Options Requests Enable Cross-Domain HTTP Access to WCF Services?

Accès aux services WCF inter-domaines avec les demandes d'options de contrôle en amont

Lorsque vous tentez des requêtes HTTP inter-domaines vers les services WCF, il est essentiel de tenir compte des limitations CORS. Cet article explique comment contrôler en amont une requête HTTP à l'aide d'OPTIONS pour surmonter ces obstacles.

Le processus de contrôle en amont

Avant d'envoyer une requête réelle, les navigateurs contrôlent en amont la requête à l'aide d'une requête OPTIONS pour déterminer si le serveur autorise la demande. Cette étape comprend l'envoi de deux en-têtes de requête spéciaux :

  • Access-Control-Request-Method : spécifie la méthode HTTP de la requête réelle (par exemple, GET, POST)
  • Access-Control -Request-Headers : répertorie tous les en-têtes personnalisés qui seront inclus dans la requête réelle

Réponse côté serveur

Pour répondre à ces demandes de contrôle en amont, le serveur doit répondre avec les en-têtes appropriés :

  • Access-Control-Allow-Origin : Spécifie les origines autorisées à accéder à la ressource
  • Access-Control-Allow-Methods : Répertorie les méthodes HTTP autorisées pour la ressource
  • Access-Control-Allow-Headers : énumère les en-têtes personnalisés autorisés dans la requête réelle

Preflight avec jQuery.getJSON

L'utilisation de jQuery.getJSON pour les requêtes GET nécessite contrôle en amont avec une requête OPTIONS. Cela peut être implémenté comme suit :

<code class="javascript">$.ajax({
  url: "http://your.wcf.endpoint",
  type: "OPTIONS",
  success: function(data) {
    console.log("Preflight successful:", data);
  }
});

$.getJSON("http://your.wcf.endpoint", function(data) {
  console.log("Actual GET request:", data);
});</code>

Exemples d'en-têtes de réponse

Considérez une demande de contrôle en amont entrante avec les en-têtes suivants :

Origin: http://yourdomain.com
Access-Control-Request-Method: POST
Access-Control-Request-Headers: X-Custom-Header

Le serveur doit répondre avec :

Access-Control-Allow-Origin: http://yourdomain.com
Access-Control-Allow-Methods: GET, POST
Access-Control-Allow-Headers: X-Custom-Header

Les Access-Control-Request-Headers doivent être repris dans la réponse Access-Control-Allow-Headers, et le caractère générique '*' n'est pas autorisé.

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