3

ODataエンドポイントをクエリするためのAJAXアプリケーションを構築しています。Netflix ODataフィードでいくつかのテストを行っていましたが、取得できないものが見つかりました。

URL( http://odata.netflix.com/v1/Catalog/Titlesなど)に対して.ajax()リクエストを行うと、「OriginnullはAccess-Control-Allow-Originで許可されていません」というエラーが表示されます。 。ただし、同じURLをブラウザに入力すると、リクエストが通過し、応答が返されます。

ここで私が得ていない根本的な違いは何ですか?ブラウザはどのように同一生成元ポリシーをバイパスしていますか?

4

2 に答える 2

2

Netflix の OData にも JSONP を使用しました。私のアプリケーションではうまくいくようです。コードと説明をブログhttp://bit.ly/95HXLMに投稿しました

以下のいくつかのサンプルフラグメントも同様です:

49.        // Make JSONP call to Netflix
50.     $.ajax({
51.            dataType: "jsonp",
52.            url: query,
53.            jsonpCallback: "callback",
54.            success: callback
55.            });
56.        });
57. 
58.    function callback(result) {
59.        // unwrap result
60.        var movies = result.d.results;
61. 
62.        $("#movieTemplateContainer").empty();
63.        $("#movieTemplate").tmpl(movies).appendTo("#movieTemplateContainer");
64.    }
于 2010-12-14T02:54:00.707 に答える
1

同じオリジン ポリシーが、リモート サイトからページをロードしたコード内から発行された HTTP 要求に適用されます。そのコードは、制御下にあるユーザーであるあなたが haxors.r.us からコンテンツを取得しても問題ないが、そのサイトが発行することを望まないという前提の下で、異なるドメインからのコンテンツに対する新しい要求を発行することをマシンによって許可されていません。あなたの言うことなしに、bankofamerica.com への HTTP リクエスト。ただし、ブラウザーは、管理下にあるユーザーが HTTP 要求をどこにでも発行できるようにする必要があります。確かに、機械の陰で人類が衰退している今、私はそれを要求します。 私はそれを要求します!

サーバーからその URL へのリクエストを作成し、クライアント上のコードに応答を渡すことができます (サーバー コードが選択する可能性がある何らかのフィルタリングまたは抽出の後)。あるいは、Netflix が JSONP API をサポートしている可能性があります。これにより、クライアント側のコードが GET リクエストをスクリプト フェッチとして発行し、結果を Javascript コードとして解釈できるようになります。

また、このポリシーは jQuery 自体とはまったく関係がないことに注意してください。これは、XMLHttpRequest メカニズムの基本的なセキュリティ ルールです。

于 2010-11-02T18:07:32.287 に答える