Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jQuery ajax request being block because Cross-Origin

How to get content from remote url via ajax?

jQuery ajax request being block because Cross-Origin

Console Log

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://www.dailymotion.com/embed/video/x28j5hv. (Reason: CORS header 'Access-Control-Allow-Origin' missing).

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://www.dailymotion.com/embed/video/x28j5hv. (Reason: CORS request failed).

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; } 
like image 653
Arbab Rasheed Avatar asked Jul 20 '15 09:07

Arbab Rasheed


2 Answers

Try to use JSONP in your Ajax call. It will bypass the Same Origin Policy.

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

Try example

$.ajax({     url: "https://api.dailymotion.com/video/x28j5hv?fields=title",      dataType: "jsonp",     success: function( response ) {         console.log( response ); // server response     }  }); 
like image 58
Hassaan Avatar answered Sep 17 '22 18:09

Hassaan


There is nothing you can do on your end (client side). You can not enable crossDomain calls yourself, the source (dailymotion.com) needs to have CORS enabled for this to work.

The only thing you can really do is to create a server side proxy script which does this for you. Are you using any server side scripts in your project? PHP, Python, ASP.NET etc? If so, you could create a server side "proxy" script which makes the HTTP call to dailymotion and returns the response. Then you call that script from your Javascript code, since that server side script is on the same domain as your script code, CORS will not be a problem.

like image 28
HaukurHaf Avatar answered Sep 19 '22 18:09

HaukurHaf