1

状況: angular/.netwebapi を使用して e コマース サイトを構築しています。重要なのは、同じ webapi サービスのセットを共有する複数の顧客に展開する必要があることです (舞台裏で mongoDB カタログと通信し、mysql 注文データベースを管理します)。また、変更される静的ルール セットと機能ルール セットがあるため、顧客ごとに個別のフォルダーを用意する必要があります。

質問 1: URL がhttp://mydomain.com/cust1http://mydomain.com/cust2などになるように、仮想フォルダーに angular アプリをデプロイするにはどうすればよいですか。ファイル

質問 2:複数のポートにサイトを作成し、各ストアを異なるポートにホストすることで、#1 を解決します。それはうまくいくでしょう。しかし、.Net Web Api アプリを中心的なアプリにしたくありません。したがって、ポート <> 80 ( http://mydomain.com:8081/index.html#など) から提供されるページからhttp://mydomain.com/api/serviceで実行されているサービスにアクセスしようとすると、CORS の問題が発生します。 /マイページ)。

質問 3:サブドメイン アプローチを使用すれば、1 と 2 は解決できると思います。したがって、各ストアは異なるサブドメイン (cust1.mydomain.com、cust2.mydomain.com など、それぞれが異なるフォルダーを指す) にホストされ、webapi は 1 つの仮想ディレクトリ (mydomain.com/api など) にホストされます。すぐにIISで試してみます。

質問 4:しかし、私の本当の意図は、angular アプリを Linux ボックスにデプロイし、Windows でサービスをホストすることでした。すべてをawsにすることにしたので、CORSに再び巻き込まれないように、LinuxとWindowsの両方のボックスを1つのドメイン内に配置する方法がわかりません。それへのポインタは本当に高く評価されます。

前もって感謝します

4

2 に答える 2

0

この問題を軽減すると、CORS を有効にすることが解決策になるようです。

IIS / ASP.NET を使用している場合は、次のいずれかでこれを行うことができます。

  • サイトまたは仮想ディレクトリに「Access-Control-Allow-Origin」ヘッダーを追加することによる IIS
  • ASP.NET with Response.AppendHeader("Access-Control-Allow-Origin", "*") ;
于 2013-09-29T06:26:41.420 に答える
0

全て

最後に、問題は解決したようです。私の設定は -

  1. nginx サーバー (mydomain.com) でホストされる Angular アプリ
  2. Web サービスは、Windows 2012 サーバー (app.mydomain.com) でホストされています。

** 両方とも同じリージョンの aws にあります。

cors を機能させるには、複数のことを行う必要がありました。

  1. 次の行を追加して、angular app.js の app.config を変更します ( http://better-inter.net/enabling-cors-in-angular-js/に感謝します)。

    app.config(['$httpProvider', function($httpProvider) { $httpProvider.defaults.useXDomain = true; $httpProvider.defaults.headers.common['X-Requested-With'] を削除; }

  2. これにより、GET リクエストが処理されました。ただし、POST の場合、angular は最初に OPTION リクエストを起動して、Web サーバーの受け入れを確認します (W3C による)。したがって、Web サーバーはそれに応じて再生する必要があります。そこで、既存の .Net MVC プロジェクトから古いが非常に効果的な CORSHandler クラスを使用しました。Youc an read details here - http://dlr2008.wordpress.com/2013/06/17/rest-web-api-and-cors/ さまざまな投稿でこれについて多数の言及がありますが、これは 1 つだけです (私の知る限り)それがどのように機能するかを説明します)

  3. 1 と 2 ではうまくいくはずでしたが、うまくいきませんでした。それで、「文書化されていない」ことの時が来ました。#2 で定義した corshandler に OPTION リクエストが到達できるようにするには、webdav を無効にする必要があるようです。この投稿ごとに web.config を変更 --> http://brockallen.com/2012/10/18/cors-iis-and-webdav/

最後はみんなで力を合わせて…

私がやったので、特に#3で多くの人が髪を抜いたと確信しています. これがすべてのそのような貧しい魂の数時間を節約することを願っています... hth

于 2013-10-06T19:48:12.067 に答える