Maison > Article > interface Web > Pourquoi est-ce que j'obtiens des erreurs \'No \'Access-Control-Allow-Origin\' Header\' lors de l'accès à des fichiers XML à partir de différents domaines ?
Erreur XML jQuery : "Aucun en-tête 'Access-Control-Allow-Origin' n'est présent sur la ressource demandée"
Lors de la tentative de Si vous accédez à un fichier XML situé sur un domaine différent à l'aide de jQuery, vous pouvez rencontrer le message d'erreur : "Aucun en-tête 'Access-Control-Allow-Origin' n'est présent sur la ressource demandée." Cette erreur se produit en raison de la politique de même origine, qui restreint les appels AJAX d'origine croisée.
Comprendre la politique de même origine
La politique de même origine impose que les navigateurs Web autorisent uniquement les appels AJAX vers des services hébergés sur le même domaine que la page HTML effectuant la demande. Dans l'exemple donné, la page HTML est hébergée sur http://run.jsbin.com/, tandis que le fichier XML se trouve sur http://www.ecb.europa.eu/, ce qui entraîne une requête d'origine croisée qui est bloqué par le navigateur.
Activation des requêtes d'origine croisée (CORS)
Pour autoriser les requêtes d'origine croisée, un serveur doit inclure les en-têtes appropriés dans sa réponse. L'un de ces en-têtes est l'en-tête Access-Control-Allow-Origin, qui précise les origines autorisées à accéder à la ressource.
Dans le cas du fichier XML, le serveur de la BCE ne fournit pas le CORS nécessaire en-têtes, d'où le message d'erreur. Pour résoudre ce problème, le serveur devra être configuré pour inclure les en-têtes suivants :
Access-Control-Allow-Origin: http://run.jsbin.com Access-Control-Allow-Methods: GET Access-Control-Allow-Headers: Content-Type
Remarque sur les demandes de contrôle en amont
Dans certains cas, par exemple lors de la création Requêtes POST avec des en-têtes non simples, le navigateur peut effectuer une requête de contrôle en amont OPTIONS pour déterminer si le serveur prend en charge CORS pour la requête spécifique. Si la réponse du serveur à cette requête de contrôle en amont ne contient pas les en-têtes CORS appropriés, la requête principale échouera avec le même message d'erreur. Il est donc important d'inclure les en-têtes nécessaires dans les réponses aux demandes de contrôle en amont et principales.
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!