2011-06-26 14 views
20

私はbackbone.jsとjqueryで作業したいと思います。アプリは携帯電話(つまり「localhost」)上でオフラインで実行されるはずであり、インターネットのどこかのサーバー側のバックエンドではほとんどコールされません。backbone.jsとクロスドメインスクリプティング

backbone.jsでクロスドメイン要求を実現する最も良い方法は何ですか?

JSONを使用したいと思いますが、必要に応じて最終的にRESTに切り替えることができます。

はここで、これまでに私は非常に印象的ではないコードです:

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

"私はJSONを使用したいと思いますが、必要に応じて最終的にRESTに切り替えることができます。" - JSONとRESTはどちらでもない、または物事ではない、JSONはデータを文字列にシリアル化するための形式、RESTはWebサービスのインターフェイスパターンです。私は答えを投稿し、あなたが何らかの説明をしているかどうか調整します。 – Stoive

答えて

38

はBACKBONE.JSはURLからデータをフェッチするために使用する方法であるクロスドメインのXMLHttpRequestsを可能にする2つの方法があります。 1つは、接続しようとしている非オリジンドメインのサーバー側を制御していて、Cross-Origin Resource Sharing(またはCORS)を暗示する場合に適切です。

:あなたが奉仕したいドメインの Access-Control-Allow-Originレスポンスヘッダに、(それが正規表現 ^.+?\/{2}[^\/]*と一致する必要がありますビット pathの初めまで)、CORSを実装する「起源」部分にHTTP Refererリクエストヘッダを返すために

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

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

クロスオリジンサーバにアクセスできない場合は、自分のサーバ(CORSを有効にするオリジンサーバまたはオリジンサーバ)を介して要求をプロキシすることです。明らかに電話をかけようとしているドメインを所有している人はあなたのことを好まないかもしれませんが、それは設計によるものです。クライアントのIP。

+0

うわー、それは簡単でした!ありがとう! :-)私のためにはスラッシュなしでhttp://mydomain.comでbtwを動かしました – herrjeh42

+3

問題ありません!これですべてがカバーされている場合は、正しい答えとしてマークしてください。ありがとう:) – Stoive

+0

"正解"機能、Stoiveに私を指摘してくれてありがとう! – herrjeh42