jQuery的AJAX请求是块因为跨源

问题描述 投票:9回答:3

如何获得通过AJAX从远程URL内容?

jQuery的AJAX请求是块因为跨源

控制台日志

跨来源请求阻止:同源策略不允许在http://www.dailymotion.com/embed/video/x28j5hv读取远程资源。 (原因:CORS头“访问控制允许来源”缺失)。

跨来源请求阻止:同源策略不允许在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;
}
jquery ajax cross-domain
3个回答
24
投票

试着在你的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
    }

});

10
投票

没有什么,你可以在你的最终(客户端)做的。您不能启用跨域调用自己,源(dailymotion.com)必须启用COORS这个工作。

你真的可以做的唯一的事情就是创建一个服务器端代理脚本,它可以实现这个要求。您是否使用项目中的任何服务器端脚本? PHP,Python和ASP.NET等?如果是这样,你可以创建一个服务器端的“代理”脚本,这使得HTTP调用位DailyMotion和返回响应。然后调用该脚本从你的JavaScript代码,因为该服务器端脚本是在同一个域脚本代码,COORS将不会是一个问题。


0
投票

尝试用跨域卷曲请求。

如果您正在通过第三方API或通过跨域获取数据,它总是建议使用卷曲脚本(服务器端),这是更安全的。

我总是喜欢卷曲脚本。

© www.soinside.com 2019 - 2024. All rights reserved.