ヘッダーにAccess-Control-Allow-Origin:*
を追加する方法を知りたいのですが。
私はこれを試しましたが失敗しました:
app.Use((context, next) =>
{
context.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });
return next.Invoke();
});
app.use(...)
を使用し、_context.Response.Headers
_内から_Startup.Configure
_を変更することは正しいですが、チェーンの適切なポイントで行うことが重要です。 ASP.NET Coreミドルウェアコンポーネントは「短絡」する可能性があり( ASP.NET Core Middleware ドキュメントを参照)、それ以上のミドルウェアが呼び出されないようにします。それを試してみると、UseMvc()
はそうします。したがって、MVCアプリケーションでは、app.use(...)
呼び出しbeforeapp.UseMvc()
を実行する必要があります。
つまり、VisualStudioが生成するテンプレートASP.NETCore 2.0アプリケーションから始めて、_Startup.Configure
_の_Startup.cs
_を次のように変更する必要があります。
_public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
// Add header:
app.Use((context, next) =>
{
context.Response.Headers["Access-Control-Allow-Origin"] = "*";
return next.Invoke();
});
app.UseMvc();
}
_
独自のミドルウェアを作成するのではなく、asp.netコアフレームワークで組み込みのCORSミドルウェアを使用することもできます。
Configure
クラスのStartup
メソッドに、次のコードを追加します。
_// Add CORS for YourAnotherSite
app.UseCors(builder =>
builder.WithOrigins("http://YourAnotherSite.com"));
_
[〜#〜]または[〜#〜]
名前付きポリシーを使用する
Configure
クラスのStartup
メソッド内
_options.AddPolicy("AllowMyOrigin",
builder => builder.WithOrigins("http://YourAnotherSite.com"));
_
次に、スタートアップクラスのConfigureServices
メソッドで。
app.UseCors("AllowMyOrigin");
または、ポリシーを各ControllerまたはActionメソッドに適用することもできます。
ApplicationBuilderメソッドにも一貫性がないことがわかりました。ハンドラーがチェーンに戻っているとき(たとえば、UseStaticFiles()
)とそうでないとき(UseMvc()
)は明確ではありません。
実行している環境はわかりませんが、IISを使用する場合は、まだweb.config
をあきらめないでください! rl rewrite モジュールは完全に機能し、allリクエストにアウトバウンドルールを設定できます。
ここに良い答えがあります: https://stackoverflow.com/a/26545975/548664
私はあなたのコードを試しました、そしてそれは美しく働きました...配置は重要です:私はそれがチェーンの早い段階である必要があるとかなり確信しています。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
//app.UseCors(builder => builder.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin());
app.Use((context, next) => {
context.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });
return next.Invoke();
});
app.UseMvc();
app.UseWebSockets();
app.UseSignalR();
}