Ajax経由でリモートURLからコンテンツを取得する方法は?
cross-OriginによるjQuery ajaxリクエストのブロック
コンソールログ
Cross-Origin Request Blocked:Same Origin Policyは、 http://www.dailymotion.com/embed/video/x28j5hv でリモートリソースの読み取りを許可しません。 (理由:CORSヘッダー 'Access-Control-Allow-Origin'がありません)。
Cross-Origin Request Blocked:Same Origin Policyは、 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;
}
Ajax呼び出しでJSONP
を使用してみてください。 Same Origin Policyをバイパスします。
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
}
});
あなたの側(クライアント側)でできることは何もありません。 crossDomain呼び出しを自分で有効にすることはできません。ソース(dailymotion.com)でこれを機能させるにはCOORSを有効にする必要があります。
本当にできるのは、これを行うサーバー側プロキシスクリプトを作成することだけです。プロジェクトでサーバー側のスクリプトを使用していますか? PHP、Python、ASP.NETなど?その場合、dailymotionへのHTTP呼び出しを行い、応答を返すサーバー側の「プロキシ」スクリプトを作成できます。次に、JavaScriptコードからそのスクリプトを呼び出します。サーバー側のスクリプトはスクリプトコードと同じドメインにあるため、COORSは問題になりません。
クロスドメインのcURLリクエストで試してください。
サードパーティのAPIを使用している場合、またはCROSS-DOMAINを介してデータを取得している場合は、より安全なcURLスクリプト(サーバー側)を使用することを常にお勧めします。
私は常にcURLスクリプトを好みます。