そよ風で既存のwebapiサービスを使用するにはどうすればよいですか?私のwebapiサービスは「server1/api」にあり、Webアプリケーションは「server2」にあることに注意してください。データサービスでサービス名を変更しようとしましたが、XMLHttpRequest例外101が発生します。これはクロスドメインエラーです。別のドメインのwebapiサービスでそよ風を使用することは可能ですか?
1 に答える
クロスオリジンBreezeアプリ
はい、あるサーバーからBreezeクライアントアプリを取得し、そのBreezeアプリを別のサーバーでホストされているデータサービスと通信させることは可能です。
Breezeクライアントアプリは、サービスがCORS用に構成されている場合、 CORSをサポートするブラウザーでクロスオリジンを非常にうまく実行します。
クロスオリジンの問題とCORSソリューションは、Webセキュリティの問題のより一般的なカテゴリに含まれます。それらはBreeze固有ではありません。BreezeWebサイトの「CoolBreezes」セクションにCORS+Breezeに関するトピックを投稿する予定です。
更新:2013年12月10日
このサンプルでは、Web API2にアップグレードした場合は推奨されなくなった、基本的なCORS実装を使用しています。基本的なCORSとWebAPI2CORSサポートを利用する方法について説明している、この優れた記事「ASP.NET WebAPI2でのCORSサポート」をお読みください。
この回答の残りの部分は、最初に書かれたままです。
CORSを使用したTodoサンプル
それまでは、Todoサンプルのコードをご覧ください。そのサンプルのサーバーはCORS用にセットアップされ、todo.breezejs.comにデプロイされており、BreezeTodoサンプルトピックページの下部にあるjsFiddleを見ると実際の動作を確認できます。
関心のある4つのポイント:
App_Start/ BreezeSimpleCorsHandler.csが作業を行います
App_Start/ BreezeWebApiConfig.csはそれをオンにします
//このサーバーでCORSが有効になっている GlobalConfiguration.Configuration.MessageHandlers.Add(new BreezeSimpleCorsHandler());
IIS7に必要なWeb.config 行(IIS8またはVS2012のIIS Expressには必要ありません)
Scripts / app / dataservice.jsは、外部サーバーを指す準備ができています。この行を参照してください:
// *クロスオリジンサービスの例* //var serviceName =' http://todo.breezejs.com/api/todos '; //異なるオリジンのコントローラー
それが今のところあなたを乗り越えることを願っています。