首页 文章

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

提问于
浏览
8

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

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

Console Log

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

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;
}

3 回答

  • 13

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

    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
        }
    
    });
    
  • 0

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

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

  • 6

    尝试使用跨域的cURL请求 .

    如果您正在使用第三方API或通过CROSS-DOMAIN获取数据,则始终建议使用更安全的cURL脚本(服务器端) .

    我总是喜欢cURL脚本 .

相关问题