ASP.NET Core 6.0 Web API プロジェクトで CORS を構成しました。しかし、プリフライト リクエストで http 405 エラーが発生します。
つまり、HTTP OPTION は許可されていません。cors が有効になっていないようです。
例は見たことがありますが、このプロジェクト テンプレートにはconfig.EnableCors();
ありません。App_Start/WebApiConfig.cs
ここで何が欠けているのでしょうか?
プログラム.cs
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var devCorsPolicy = "devCorsPolicy";
builder.Services.AddCors(options =>
{
options.AddPolicy(devCorsPolicy, builder => {
//builder.WithOrigins("http://localhost:800").AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader();
builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader();
//builder.SetIsOriginAllowed(origin => new Uri(origin).Host == "localhost");
//builder.SetIsOriginAllowed(origin => true);
});
});
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
app.UseCors(devCorsPolicy);
}
else
{
app.UseHttpsRedirection();
app.UseAuthorization();
//app.UseCors(prodCorsPolicy);
}
app.MapControllers();
app.Run();
ベストアンサー1
サービスbuilder.Services.AddCors
とアプリの追加app.UseCors("corsapp");
builder.WithOrigins("*")
と置換するbuilder.WithOrigins("http://localhost:800", "https://misite.com");
チェックドキュメンテーション
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
//services cors
builder.Services.AddCors(p => p.AddPolicy("corsapp", builder =>
{
builder.WithOrigins("*").AllowAnyMethod().AllowAnyHeader();
}));
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
//app cors
app.UseHttpsRedirection();
app.UseRouting();
app.UseCors("corsapp");
app.UseAuthorization();
//app.UseCors(prodCorsPolicy);
app.MapControllers();
app.Run();