web-dev-qa-db-ja.com

バックボーン.jsとクロスドメインスクリプティング

私はbackbone.jsとjqueryを操作したいと思います。アプリは携帯電話(つまり「localhost」)でオフラインで実行されることになっているため、インターネットのどこかにあるサーバー側のバックエンドでの通話はほとんどありません。

バックボーン.jsでクロスドメインリクエストを実現するための最良の方法は何ですか?

JSONを使用したいのですが、必要に応じて最終的にRESTに戻すことができます。

これまでのところ、あまり印象的ではないコードは次のとおりです。

App.Collections.Events = Backbone.Collection.extend({
   model: Event,    
   url: 'http://mydomain.com/api/getevents/user_id/1/'
});
20
herrjeh42

クロスドメインXMLHttpRequestsを許可する方法は2つあります。これは、Backbone.jsがURLからデータをフェッチするために使用する方法です。最初の方法は、接続しようとしている非オリジンドメインのサーバー側を制御できる場合に適切であり、暗黙の クロスオリジンリソースシェアリング (またはCORS)を伴います。

CORSを実装するには、HTTP Refererリクエストヘッダーの「Origin」部分(pathの先頭までのビット。正規表現_^.+?\/{2}[^\/]*_と一致する必要があります)を_Access-Control-Allow-Origin_サービスを提供するドメインの応答ヘッダー:

_ Access-Control-Allow-Origin: http://mydomain.com
_

right settings をXMLHttpRequestオブジェクトに設定するには、 Backbone.sync をオーバーライドする必要がある場合があります。

2番目のオプションは、クロスオリジンサーバーにアクセスできない場合、独自のサーバー(オリジンサーバーまたはCORSを有効にするサーバー)を介してリクエストをプロキシすることです。明らかに、あなたが呼び出そうとしているドメインを所有している人は誰でもあなたがそうすることを好まないかもしれませんが、それは設計によるものです-彼らがあなたにあなたのサービスを呼び出させたくない場合、彼らはあなたのそれぞれの代わりに1つのIPアドレスしかブロックしませんクライアントのIP。

38
Stoive