5

そよ風で既存のwebapiサービスを使用するにはどうすればよいですか?私のwebapiサービスは「server1/api」にあり、Webアプリケーションは「server2」にあることに注意してください。データサービスでサービス名を変更しようとしましたが、XMLHttpRequest例外101が発生します。これはクロスドメインエラーです。別のドメインのwebapiサービスでそよ風を使用することは可能ですか?

4

1 に答える 1

14

クロスオリジン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 '; //異なるオリジンのコントローラー

それが今のところあなたを乗り越えることを願っています。

于 2013-01-31T21:35:08.730 に答える