2015-12-03 17 views
12

で私が理解から、それに応じてCORSを有効にすると、応答モデルは、(私はすべてを許可するものとする)は、次のヘッダー情報を含める必要があります。ASP.NET 5:アクセス制御 - 許可 - 起源応答

Access-Control-Allow-Origin: * 
Access-Control-Allow-Method: * 
Access-Control-Allow-Header: * 

Startupでそれを有効にする:

public void ConfigureServices(IServiceCollection services) 
{ 
    //... 
    services.AddCors(); 
    services.ConfigureCors(options => 
    { 
     options.AddPolicy("AllowAll", p => p.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader().AllowCredentials()); 
    }); 
    //... 
} 

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
{ 
    //... 
    app.UseCors("AllowAll"); 
    //... 
} 

問題は、これらのヘッダのいずれも返却されないことで、APIからの要求しようとしたとき、私は次のエラーを取得する:

プリフライト要求に応答してもアクセス制御チェックを通過しません。いいえ 要求された リソースに 'Access-Control-Allow-Origin'ヘッダーが存在します。 Origin 'http://localhost'はアクセスできません。

+0

このエラーはクロームコンソールに来ていますか? – user2120121

+1

MVCミドルウェアの前にCorsミドルウェアを登録しましたか?あなたの 'Configure'メソッドについてもっと情報を共有できますか? –

+3

Kiranによると、 'Startup.Configure'メソッドで' app.UseMvc'の後に 'app.UseCors'を追加していれば、これはうまくいきません。 MVCミドルウェアの前にCorsミドルウェアを追加する必要があります。 @ DanielJ.G。 –

答えて

16

あなたはMVCミドルウェア前に適用するCORSミドルウェアを必要とするので、あなたはStartup.Configure方法でapp.UseMvcapp.UseCorsを追加していることを確認します。

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
{ 
    ... 

    //Add CORS middleware before MVC 
    app.UseCors("AllowAll"); 

    app.UseMvc(...); 
} 

それ以外の場合は、CORSミドルウェアが適用される前に要求が完了します。 UseMvcRouterMiddlewareを追加終わるUseRouterを呼び出し、このミドルウェアは唯一のルートハンドラが要求見つかりませんでした次の構成ミドルウェアを実行するためです。

+0

を追加した、ありがとうございました。 –

+1

ありがとうございます! – Boler

関連する問題