web-dev-qa-db-ja.com

Cross-OriginによるjQuery ajaxリクエストのブロック

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;
}
15
Arbab Rasheed

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
    }

});
24
Hassaan

あなたの側(クライアント側)でできることは何もありません。 crossDomain呼び出しを自分で有効にすることはできません。ソース(dailymotion.com)でこれを機能させるにはCOORSを有効にする必要があります。

本当にできるのは、これを行うサーバー側プロキシスクリプトを作成することだけです。プロジェクトでサーバー側のスクリプトを使用していますか? PHP、Python、ASP.NETなど?その場合、dailymotionへのHTTP呼び出しを行い、応答を返すサーバー側の「プロキシ」スクリプトを作成できます。次に、JavaScriptコードからそのスクリプトを呼び出します。サーバー側のスクリプトはスクリプトコードと同じドメインにあるため、COORSは問題になりません。

10
HaukurHaf

クロスドメインのcURLリクエストで試してください。

サードパーティのAPIを使用している場合、またはCROSS-DOMAINを介してデータを取得している場合は、より安全なcURLスクリプト(サーバー側)を使用することを常にお勧めします。

私は常にcURLスクリプトを好みます。

0
Ram Chander