web-dev-qa-db-fra.com

jQuery ajax request being block because Cross-Origin

Comment obtenir du contenu à partir d'une URL distante via ajax?

jQuery ajax request being block because Cross-Origin

Journal de la console

Demande d'origine croisée bloquée: la même politique d'origine interdit la lecture de la ressource distante sur http://www.dailymotion.com/embed/video/x28j5hv . (Raison: en-tête CORS 'Access-Control-Allow-Origin' manquant).

Demande d'origine croisée bloquée: la même politique d'origine interdit la lecture de la ressource distante sur http://www.dailymotion.com/embed/video/x28j5hv . (Raison: la demande CORS a échoué).

Code

$.ajax({
url: "http://www.dailymotion.com/embed/video/x28j5hv",
type:'GET',
contentType: "html",
crossDomain:true,
success: function(data){
   //$('#content').html($(data).html());
   var src = $(data).html();
    alert(src);
    return false;
}
15
Arbab Rasheed

Essayez d'utiliser JSONP dans votre appel Ajax. Il contournera la même politique d'origine.

http://learn.jquery.com/ajax/working-with-jsonp/

Essayez l'exemple

$.ajax({
    url: "https://api.dailymotion.com/video/x28j5hv?fields=title",

    dataType: "jsonp",
    success: function( response ) {
        console.log( response ); // server response
    }

});
24
Hassaan

Il n'y a rien que vous puissiez faire de votre côté (côté client). Vous ne pouvez pas activer les appels crossDomain vous-même, la source (dailymotion.com) doit avoir COORS activé pour que cela fonctionne.

La seule chose que vous pouvez vraiment faire est de créer un script proxy côté serveur qui le fait pour vous. Utilisez-vous des scripts côté serveur dans votre projet? PHP, Python, ASP.NET, etc.? Si c'est le cas, vous pouvez créer un script "proxy" côté serveur qui fait l'appel HTTP à dailymotion et renvoie la réponse. Ensuite, vous appelez ce script à partir de votre code Javascript, car ce script côté serveur est sur le même domaine que votre code de script, COORS ne sera pas un problème.

10
HaukurHaf

Essayez avec la demande cURL pour le domaine croisé.

Si vous travaillez via des API tierces ou obtenez des données via CROSS-DOMAIN, il est toujours recommandé d'utiliser le script cURL (côté serveur) qui est plus sécurisé.

Je préfère toujours le script cURL.

0
Ram Chander