3161 votes

« No ' Access-Control-Allow-Origin ' en-tête est présent sur la ressource demandée »

Je suis en train de faire l'autorisation à l'aide de JavaScript en se connectant à l' RESTful API construit dans le Flacon.

Comme résultat que j'obtiens:

XMLHttpRequest cannot load http://myApiUrl/login. No
'Access-Control-Allow-Origin' header is present on the requested
resource. Origin 'null' is therefore not allowed access.

Je sais que l'API ou à distance ressource doit définir l'en-tête, mais pourquoi avait-il travailler quand j'ai testé l'autorisation de l'extension Chrome FACTEUR?

C'est le code de la demande:

$.ajax({
    type: "POST",
    dataType: 'text',
    url: api,
    username: 'user',
    password: 'pass',
    crossDomain : true,
    xhrFields: {
        withCredentials: true
    }
})
    .done(function( data ) {
        console.log("done");
    })
    .fail( function(xhr, textStatus, errorThrown) {
        alert(xhr.responseText);
        alert(textStatus);
    });

1618voto

MD. Sahib Bin Mahboob Points 2360

Si j'ai bien compris vous avez raison de faire un XMLHttpRequest à un autre domaine que la page est sur. Ainsi, le navigateur se bloque car il permet, en général, une demande de la même origine pour des raisons de sécurité. Vous avez besoin de faire quelque chose de différent lorsque vous voulez faire une demande de domaines. Un tutoriel sur la façon d'y parvenir est à l'Aide de la SCRO.

Lorsque vous utilisez facteur qu'ils ne sont pas affectés par cette politique. Cité de la Croix-Origine XMLHttpRequest:

Régulièrement les pages web peuvent utiliser l'objet XMLHttpRequest pour envoyer et recevoir des données à partir des serveurs distants, mais ils sont limités par la même la politique de l'origine. Les Extensions ne sont pas limitées. Une extension peut parler à des serveurs distants à l'extérieur de son origine, aussi longtemps que il demande tout d'abord de la croix-origine des autorisations.

339voto

Gavin Points 561

Si vous pouvez traiter avec json en retour, puis essayez d’utiliser jsonp (Notez le p à la fin) pour parler entre les domaines :

«L’avènement de JSONP - essentiellement un consensuel multisite script hack - a ouvert la porte aux mashups puissant du contenu."

https://Learn.jQuery.com/Ajax/Working-with-JSONP/

67voto

Alin Razvan Points 51

il y a une croix problème de domaine à l'aide d'ajax , vous devez être sûr que vous avez accès aux fichiers sur le même http:// chemin sans www. (ou de l'accès à partir d' http://www. et poster le même chemin, y compris www.) dont le navigateur considère comme un autre domaine lors de l'accès via www. chemin , si vous voyez où est le problème , vous êtes d'une affectation à un autre domaine et que le navigateur bloque la circulation en raison de l'origine de la question .

Si l'api n'est pas placé sur le même hôte que vous demandez , le débit est bloqué et vous devez trouver un autre moyen de communiquer avec l'api .

23voto

user3359786 Points 41

Essayez ceci : xdomian

Résumé : un pur JavaScript CORS alternative/polyfill. Aucune configuration de serveur requise - il suffit d’ajouter un proxy.html sur le domaine que vous souhaitez communiquer avec. Cette bibliothèque utilise XHook pour accrocher tous XHR, donc XLE devrait fonctionner en conjonction avec n’importe quelle bibliothèque.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X