jQuery ajax请求被阻塞因为Cross-Origin

Arb*_*eed 16 ajax jquery cross-domain

如何通过ajax从远程URL获取内容?

jQuery ajax请求被阻塞因为Cross-Origin

控制台日志

跨源请求已阻止:同源策略禁止在http://www.dailymotion.com/embed/video/x28j5hv上读取远程资源.(原因:缺少CORS标题'Access-Control-Allow-Origin').

跨源请求已阻止:同源策略禁止在http://www.dailymotion.com/embed/video/x28j5hv上读取远程资源.(原因:CORS请求失败).

$.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;
}
Run Code Online (Sandbox Code Playgroud)

Has*_*aan 25

尝试JSONP在Ajax调用中使用.它将绕过同源政策.

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

试试例子

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

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

});
Run Code Online (Sandbox Code Playgroud)

  • jsonp实际上工作但响应数据显示我错误.`SyntaxError:缺少; before statement {"result":[{"id":1,"cat_name":"travel","imgpath":"http:\/adas\/ asd","`并指向"结果"之后的冒号,这是什么意思 ? (7认同)
  • 这意味着它无法解析响应.当你使用jsonp时,响应应该类似于CALLBACK({... JSON ...}).您可以在ajax参数中定义指定"jsonpCallback"的CALLBACK,或者它将随机生成并作为名为"callback"的字段发送到请求 (2认同)

Hau*_*Haf 10

你无法做到(客户端).您无法自行启用跨域调用,源(dailymotion.com)需要启用COORS才能使其正常工作.

您唯一能做的就是创建一个服务器端代理脚本,为您执行此操作.您是否在项目中使用任何服务器端脚本?PHP,Python,ASP.NET等?如果是这样,您可以创建服务器端"代理"脚本,该脚本使HTTP调用dailymotion并返回响应.然后从Javascript代码调用该脚本,因为该服务器端脚本与脚本代码在同一个域中,COORS不会成为问题.