jQuery ajax 请求被阻止,因为跨源

jQuery ajax request being block because Cross-Origin

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

jQuery ajax 请求被阻止,因为跨域

控制台日志

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).

代码

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

在您的端(客户端)您无能为力。您不能自己启用跨域调用,源 (dailymotion.com) 需要启用 CORS 才能工作。

你唯一真正能做的就是创建一个服务器端代理脚本来为你做这件事。您是否在项目中使用任何服务器端脚本? PHP、Python、ASP.NET 等等?如果是这样,您可以创建一个服务器端“代理”脚本,使 HTTP 调用 dailymotion 并 returns 响应。然后从 Javascript 代码中调用该脚本,因为该服务器端脚本与您的脚本代码位于同一域中,CORS 不会成为问题。

尝试在 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
    }

});

尝试使用 cURL 请求进行跨域。

如果您通过第三方 API 工作或通过跨域获取数据,始终建议使用更安全的 cURL 脚本(服务器端)。

我总是喜欢 cURL 脚本。

我通过在浏览器中更改文件路径解决了这个问题:

  • 而不是:c/XAMPP/htdocs/myfile.html
  • 我写了:localhost/myfile.html

$.ajax({
            url: "https://api.dailymotion.com/video/x28j5hv?fields=title",
            type: "POST",
            dataType: "json",
            crossDomain: true,
            format: "json",
            success:function(json){
                console.log('message: ' + "success"+ JSON.stringify(json));                     
            },
            error:function(error){
                console.log('message Error' + JSON.stringify(error));
            }  
        });    
/* <?php header('Access-Control-Allow-Origin: *'); ?> */