0

にRESTサービスがありhttp://restservice.netます。このサービスのクライアントをバックボーンに実装しています。クライアントは、(アプリケーションをブートストラップするための)htmlファイルと私のbackbonejsコードを保持する一連のjsファイルです。私はこれらのファイルを別のサイトでホストしていますhttp://client.net

私のbackbonejsコードはを呼び出してhttp://restservice.netいますが、が原因で許可されていsame origin policyます。私は、私がどのようにしか話すことができないかについて話している他のSOの質問をすでに見ましたhttp://client.net

を介してすべてのリクエストをリダイレクトする必要がありますかhttp://client.net?それは非効率的だと思います。では、クライアント側のMVCフレームワークを使用する意味は何ですか?ここで何かが足りませんか?

4

1 に答える 1

5

JSONPとCORSの2つのオプションがあります。どちらも、http://restservice.netサーバーがプロトコルをサポートするように設定されている必要があります。バックボーンにJSONPを使用させるには、オプションをに渡す必要がありますBackbone.sync。これを行う1つの方法は次のとおりです。

sync: function(method, model, options){   
   options.dataType = "jsonp";  
   return Backbone.sync(method, model, options);  
}  

JSONPの問題は、GETリクエストしか作成できないため、RESTAPIは事実上読み取り専用であるということです。CORSを機能させるには、適切なヘッダーを送り返すようにAPIサーバーを構成する必要があります。これはかなりリベラルです:

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, PUT, DELETE OPTIONS  

これがCORSのかなり良い要約です。これを設定すると、通常どおり動作します。

その時点でサーバーに変更を加える機能がない場合は、http://restservice.netすべての要求をそのサービスにプロキシする以外に選択肢はありません。これは間違いなく非効率的ですが、実装はおそらく予想よりも簡単です。考慮すべきことの1つは、リバースプロキシです。

于 2012-05-03T06:52:52.123 に答える