Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Dúvida] Como faço para configurar o CORS na minha API asp.NET?

Estou desenvolvendo um projeto, o backend é feito em asp.NET e o frontend em react. A ideia é desenvolver o backend como api, para que futuramente outros possam utilizar. O problema é que não estou conseguindo configurar o cors da aplicação, e isso faz com que eu fique recebendo esse erro quando tento fazer a requisição: Erro do axios impresso no console do navegador

Aqui está o código da classe Program.cs no backend (estou usando a mesma base da documentação da microsoft, mesmo assim ocorre esse erro):

var MyAllowSpecificOrigins = "_myAllowSpecificOrigins";

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddCors(options =>
{
    options.AddPolicy(MyAllowSpecificOrigins,
                          policy =>
                          {
                              policy.WithOrigins("http://localhost:3000",
                                                  "http://localhost:5231")
                                                  .AllowAnyHeader()
                                                  .AllowAnyMethod();
                          });
});

builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();
app.UseRouting();

app.UseCors(MyAllowSpecificOrigins);

app.UseAuthorization();

app.MapControllers();

app.Run();
3 respostas
solução!

Olá Jelson, beleza? Passei pelo mesmo problema algumas vezes hahaha. Para mim, o que funcionou foi o seguinte:

Supondo que você esteja utilizando o .NET 6, tente adicionar as seguintes linhas no seu arquivo 'Program.cs'.

    app.UseCors(options =>
{
    options.WithOrigins("http://localhost:0000"); 
    options.AllowAnyMethod();
    options.AllowAnyHeader();
});

Certifique-se de inserir o código mencionado logo após a linha que instancia o objeto app

var app = builder.Build();

Dentro de "options.WithOrigins("http://localhost:0000")", certifique-se de colocar a porta correta em que sua aplicação está rodando. Por exemplo, no React, o padrão seria "http://localhost:3000", se não me engano.

Isso deve ser suficiente para você conseguir consumir sua API. Se houver qualquer outro erro, volte aqui que tentarei ajudá-lo, beleza?

Por curiosidade, assista a este vídeo que explica um pouco sobre o CORS. É bem interessante! Link: https://www.youtube.com/watch?v=GZV-FUdeVwE

Bons estudos!

Eu tentei fazer isso e não funcionou, não sei mais o que fazer kkkkkkkk

Olá Jelson, tudo bem? Para configurar o CORS na sua API asp.NET, você pode utilizar o pacote Microsoft.AspNetCore.Cors e adicionar o middleware UseCors no pipeline de requisições.

Pelo código que você postou, parece que você já adicionou o middleware UseCors no pipeline de requisições. No entanto, você precisa adicionar o middleware antes do UseAuthorization, para que o CORS seja configurado corretamente.

Uma outra coisa que você pode tentar é adicionar o método AllowCredentials() no seu policy, caso você esteja utilizando cookies ou autenticação.

Se mesmo assim o erro persistir, verifique se a origem da requisição está correta e se o método e headers estão permitidos.

Espero ter ajudado e bons estudos!