ASP.NET ішінде endpoints үшін әртүрлі CORS policies қолдану
Кейде application ішінде specific endpoints үшін әртүрлі CORS policies қажет болуы мүмкін. API endpoints-тің көбі тек sample.com доменінде hosted frontend-пен байланысады деп елестетейік. Сіз осы domain үшін general CORS policy, мысалы AllowSampleCom, баптайсыз және requests-ті тек sample.com origin-інен ғана рұқсат етесіз.
Бірақ бір немесе бірнеше endpoints басқа domain-нен, мысалы admin-sample.com, requests қабылдауы керек болуы мүмкін. Мұндай жағдайда осы domain үшін арнайы separate policy, мысалы AllowAdminSampleCom, жасау ыңғайлы.
public class Program
{
public void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddCors(options =>
{
options.AddPolicy("AllowSampleCom", policy =>
{
policy.WithOrigins("https://sample.com")
.AllowAnyHeader()
.AllowAnyMethod();
});
options.AddPolicy("AllowAdminSampleCom", policy =>
{
policy.WithOrigins("https://admin-sample.com")
.AllowAnyHeader()
.AllowAnyMethod();
});
});
var app = builder.Build();
app.UseCors("AllowSampleCom");
app.MapControllers();
app.Run();
}
}
Содан кейін бұл policy-ді endpoints-ке selectively қолдануға болады.
Controllers үшін attribute қолданыңыз:
[EnableCors("AllowAdminSampleCom")]
Minimal APIs үшін method қолданыңыз:
app.MapGet("/endpoint", handler).RequireCors("AllowAdminSampleCom");
Controller endpoint үшін simple example:
[ApiController]
[Route("api/[controller]")]
public class SampleController : ControllerBase
{
[HttpPost("AddUser")]
[EnableCors("AllowAdminSampleCom")]
public IActionResult AddUser()
{
// Logic to add a user
return Ok();
}
}
Specific endpoints үшін CORS толық disable ету керек болса, мына attribute қолданыңыз:
[DisableCors]
Бұл approach flexibility береді: әр endpoint-тің specific needs бойынша CORS behavior баптауға және backend-ті secure әрі organized күйде ұстауға болады.