asp.net core Web APIではデフォルトでCORS (Cross Origin Resource Sharing) がディセーブルになっているため、別サイトからアクセスすると、クライアント側でエラーが発生してしまう。
CORSを有効にするには、Startup.csに以下のような、設定が必要となる。
public IConfiguration Configuration { get; }
public Startup(IServiceConfiguration configuration) {
Configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
// CORSポリシーの追加
services.AddCors(options =>
{
options.AddPolicy("AllowAllOriginsPolicy", // 名前は何でも良い
builder =>
{
// この例では全ホストから受付け可能(どうせ、FWでブロックされるし・・・)
// ホストを制限するには、.WithOriginsメソッドを使用
// ヘッダを制限するには、.WithHeadersメソッドを使用
// HTTPメソッドを制限するには、.WithMethodsメソッドを使用
builder.AllowAnyOrigin();
});
});
services.AddControllers();
}
↑の例では、全てのホストからの接続を許可している。
特定のホストだけ許可するには、.WithOriginsを使用する。
builder.WithOrigins("http://boo.foo.com","http://www.boo.foo.com");
後は、Configuraメソッドの中で、全てのエンドポイントに適用するか、エンドポイント毎に適用するかによって、指定が異なる。
全てのエンドポイントに適用するには、Configureメソッドの中で、
app.UseCors();
を呼び出す。
詳しくは、
https://docs.microsoft.com/ja-jp/aspnet/core/security/cors?view=aspnetcore-3.1
を参照。