0

最新の更新:

こんにちは、ダッシュロンです。

私はいくつかの独立した調査を行ってきました。私が見ているのは、jQuery Ajax、つまり JSONP をサポートする他のすべてのビデオ API が、API 呼び出し中に次のファイルを配信することです。

基本的に次のような crossdomain.xml です。

<cross-domain-policy>
<allow-access-from domain="*" />
<allow-http-request-headers-from domain="*" headers="*" />
<site-control permitted-cross-domain-policies="master-only" />
</cross-domain-policy>

これが CORS の核心です。このファイルは、YouTube、SoundCloud、および DailyMotion から取得します。

ただし、フィドラー ユーティリティを使用して Vimeo API テストをデバッグすると、提案に従ってこのファイルがトラフィック インターチェンジに表示されません。

さらに、Ajax 呼び出しタイプを単なる JSON (JSONP なし) に変更すると、リダイレクトを示す 302 応答が返されますが、指示に従って受け入れヘッダーが表示されます。明らかに JSONP が必要であるか、クライアントサイド API は役に立たないのですが、これにより、API チームが次のことを行っていると思われます。

A. テストされていない jQuery AJAX および; B. CORS を有効にしていない

これが、jQuery Ajax JSONP トラフィックの API v. 3.0 CORS 準拠に役立つことを願っています。

ありがとう、

レン

元のメッセージ:

jQuery Ajax を使用して簡単な動画検索を実行しようとしています。

Vimeo API サポートによると、これは新しいベータ API バージョン 3 でサポートされています。

私へのメールからの抜粋:

良いニュースは、API3 がこの機能をサポートすることです。現在はベータ版ですが、本番アプリで多くの人が使用しています。

https://developer.vimeo.com/apps/new?oauth2=enabledで新しいアプリを作成するか、アプリ編集ページの最後に「?oauth2=enabled」を追加してアプリで有効にすることができます。非常に初期のドキュメントは、developer.vimeo.com/api/docs で見つけることができます。

リクエストにアプリケーション シークレットを含めない限り、すべて正常に動作するはずです。問題が発生した場合はお知らせください。 抜粋を終了

次のコードでこれを実行しようとしましたが、失敗しました。

var urlX = ' http://api.vimeo.com/videos?query=elvis ';

$.ajax({
    url: urlX,
    type: "GET",
    beforeSend: function (req) {
        req.setRequestHeader("Vimeo-Client-ID", "<My API Key>");
        req.setRequestHeader('Content-type', 'application/xml; charset=UTF-8');
    },
    dataType: "jsonp",
    success: function (data) {
        alert("SUCCESS");
    },
    error: function (xhr, ajaxOptions, thrownError) {
        alert("Error: " + thrownError);
    }
});

}

以下の仕様を参考に作成しました。

https://developer.vimeo.com/api/docs/spec

これは動作しません。Vimeo API サポートからの応答がないまま 3 日が経過したため、誰か助けてもらえますか。

ありがとう!

アップデート:

これを試してみましたが、うまくいきません。時間を節約するためにサンプルコードを提供してください。どうもありがとう!!

返信いただきありがとうございます。残念ながら、これは機能しません:

urlX = ' http://api.vimeo.com/videos?query=elvis&client_id=XXXXXXXX ';

$.ajax({
    url: urlX,
    type: "GET",
    beforeSend: function (req) {
        req.setRequestHeader('Accept', 'application/vnd.vimeo.*+json;version=3.0');
    },
    dataType: "jsonp",
    success: function (data) {
        alert("SUCCESS");
    },
    error: function (xhr, ajaxOptions, thrownError) {
        alert("Error: " + thrownError);
    }
});

私もこれを試してみましたが失敗しました... :((

urlX = ' http://api.vimeo.com/videos?query=elvis&client_id=XXXXXXXX ';

$.ajax({
    url: urlX,
    type: "GET",
    headers {
       "Accept": "application/vnd.vimeo.*+json;version=3.0"
    },
    dataType: "jsonp",
    success: function (data) {
        alert("SUCCESS");
    },
    error: function (xhr, ajaxOptions, thrownError) {
        alert("Error: " + thrownError);
    }
});

私もこれを試してみましたが失敗しました:

$.ajax({
    url: urlX,
    type: "GET",
    headers {
       "Content-Type": "application/vnd.vimeo.*+json;version=3.0"
    },
    dataType: "jsonp",
    success: function (data) {
        alert("SUCCESS");
    },
    error: function (xhr, ajaxOptions, thrownError) {
        alert("Error: " + thrownError);
    }
});

そして最後に、次の StackOverflow の記事に従ってこれを試しました。jQuery で Accept HTTP ヘッダーを適切に設定できません

$.ajax({
    url: urlX,
    type: "GET",
    headers {
       Accept: "application/vnd.vimeo.*+json;version=3.0",
       "Content-Type": "application/vnd.vimeo.*+json;version=3.0"
    },
    dataType: "jsonp",
    success: function (data) {
        alert("SUCCESS");
    },
    error: function (xhr, ajaxOptions, thrownError) {
        alert("Error: " + thrownError);
    }
});

特定のエラーメッセージがなければ、解決策を推測する方法がありません。実際の例が提供されていれば、非常に感謝しています. v3.0 API を使用している他の jQuery 開発者に役立つと確信しています。

ありがとう!!

更新- クロスドメイン セキュリティの問題のようです

私の開発者の1人がこれを見て、jsonが通過したがjsonpが通過しなかったため、「CORS」iissueがあることを示唆しました。つまり、受け取ったエラーに従って、API はクロスドメイン リクエストを許可しません。

エラー: jQuery18305652002056594938_1376096997218 は呼び出されませんでした

vimeo.com 以外のドメインからこれを絶対にテストする必要があると思いますが、クロスドメイン呼び出しがサポートされていない場合、私の部分のコーディング量がそれに影響することはありません. これは、クロスドメイン リクエストを有効にするスタッフの仕事です。

    urlX = 'http://api.vimeo.com/videos?query=elvis&client_id=d0b4a83fc5c12570e9270fc54ef6ecabb8675fcf';

    $.ajax({
        url: urlX,
        type: "GET",
        beforeSend: function (req) {
            req.setRequestHeader('Accept', 'application/vnd.vimeo.*+json;version=3.0');
        },
        dataType: "jsonp",
        success: function (data) {
            alert("SUCCESS");
        },
        error: function (xhr, ajaxOptions, thrownError) {
            $("#errorMsg").text(thrownError);
        }
    });
}

ありがとう、

レン

4

2 に答える 2

1

Vimeo のサポートのおかげで、ようやく実用的なサンプルを作成することができました。私のエラーは、JSONP が必要でなくても必要であると想定していました。Vimeo は API のバージョン 3.0 で CORS が有効になっているため、jQuery の getJSON() 関数はクロスドメインで動作します。

ここに作業サンプルがあります。うまくいけば、これは誰かの時間と労力を少し節約します。

function TestVimeo() {

        urlX = 'https://api.vimeo.com/videos?query=elvis&client_id=XXXXXXXXXXXXXX';

        $.getJSON(urlX, function (data) { console.log(data); })
        .success(function (payload) {

            console.log("second success");
        })
        .error(function (jqXHR, textStatus, errorThrown) {

            console.log('******* ' + "error: " + textStatus + ' *******');

        });

    }
于 2013-08-13T13:01:12.933 に答える
0

仕様が古いようです。

Vimeo-Client-ID ヘッダーは考慮されなくなりました。クライアント ID をクエリ文字列パラメーターとして URL に追加するだけです。

http://api.vimeo.com/videos?query=elvis&client_id=XXXXXXXXX

さらに、ドキュメントに記載されているように、適切な受け入れヘッダーを提供する必要があります。Accept: application/vnd.vimeo.*+json;version=3.0

于 2013-08-09T14:34:24.967 に答える