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: *'); ?> */
如何通过 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: *'); ?> */