2016-07-20 5 views
1

私たちは、AngularJSフロントエンドとWeb APIバックエンドで作業しているイントラネットアプリケーションを用意しています。基本的には既存のASP.NET/WCFアプリケーションの再設計であり、一部の従業員のみが使用しています。アクセス制御 - ウェブAPIを使用したオリジン要求

Windows認証を使用してこのバージョンでセキュリティを強化しようとしていましたが、以前はInternet Explorer以外のブラウザでも問題がありました。たとえば、Chromeでは、401-Unauthorizedエラーが返されます。

今はセキュリティ機能をスキップするように指示されています(いいアイデアではありません)ので、無効にしましたが、今APIに話そうとするとエラーが表示されます別のプロジェクト)が、ChromeではなくIEで動作します。

XMLHttpRequestは、http://localhost:62415/api/Emailsをロードできません。要求されたリソースに「Access-Control-Allow-Origin」ヘッダーが存在しません。 Origin 'http://localhost:50900'はアクセスできません。応答にはHTTPステータスコード401が付きました。

APIプロジェクトでCORSを有効にしましたので、ここで何をする必要があるか分かりません。ローカル開発ではlocalhostを使用していますが、QAや運用環境では、これらのサイトは同じドメイン内の異なるサブドメインを持つURLを使用します。

私は私のプロジェクトでスタートアップクラスを使用していますし、それがこの方法を持っている:私は何かが欠けする必要があります

public void Configuration(IAppBuilder app) 
    { 
     var config = new HttpConfiguration(); 

     WebApiConfig.Register(config); 
     app.UseCors(CorsOptions.AllowAll); 
     app.UseWebApi(config); 
    } 

。私たちは、もともと私たちのWebApiConfigでこのコードを持っていたが、それは何も解決しませんでした復元:

var cors = new EnableCorsAttribute("*", "*", "*"); 

cors.SupportsCredentials = true; 
config.EnableCors(cors); 

すべてのヘルプは高く評価されています。

+0

ドン」 ASP.netを使用するだけで十分ですが、何をすべきか、他の選択肢はここにありますhttp://enable-cors.org/server_aspnet.html OPTIONは、そのリクエストに対する応答で実際のGET/POSTの前に出ます。ヘッダーは、Access Control Allow Originsが*に設定されているか、またはあなたの実際のクライアントドメインが何であるかを指定する必要があります。 – shaunhusain

答えて

1

追加する必要はありません。

するvar CORS =新EnableCorsAttribute( ""、 ""、 "*"); config.EnableCors(cors);

セキュリティ上の理由から、ブラウザは、スクリプト内から開始されたクロスオリジンHTTPリクエストを制限します。 たとえば、XMLHttpRequestは同じ起点ポリシーに従います。したがって、XMLHttpRequestを使用するWebアプリケーションは、独自のドメインへのHTTP要求のみを作成できます。 しかし、あなたがでていること渡すことができます。Startup.csに追加

  • nuget
  • にMicrosoft.Owin.Corsパッケージをインストールし、この方法を
public void Configuration(IAppBuilder app) 
     { 
      app.UseCors(CorsOptions.AllowAll); 
     } 
関連する問題