Liberar consumo de API C#

nathanndos

Nathan Silva

Posted on July 9, 2024

Liberar consumo de API C#

Apesar de parecer simples liberar API para uso no visual studio, no meu caso sempre veio com algum problema que fizesse com que desse erro nas requisições pelo postman, dispositivo móvel ou por algum projeto.
Dito isso, eu fiquei quebrando cabeça pra resolver e abaixo eu listei algumas coisas que podem resolver esse problema.

CORS #1

A primeira coisa a ser feita é liberar o CORS(lá ele), mas antes vamos entender o que é e como funciona.

O que é?

CORS significa Cross-Origin Resource Sharing que consiste em um mecanismo que permite aplicações web façam requisições para um servidor em outro domínio além da aplicação que está hospedada.

Como funciona?

Em resumo, o CORS funciona como um validador de origem, afim de garantir segurança do usuário.

Algumas configurações

  • Access-Control-Allow-Origin: Especifica quais origens podem acessar os recursos.
  • Access-Control-Allow-Methods: Especifica quais métodos HTTP (GET, POST, etc.) são permitidos para a requisição.
  • Access-Control-Allow-Headers: Especifica quais cabeçalhos HTTP podem ser usados na requisição.
  • Access-Control-Allow-Credentials: Indica se os cookies e credenciais HTTP podem ser incluídos na requisição (usado em requisições com credenciais, como cookies de autenticação).

Resolução

No arquivo program.cs da API no visual Studio larga o seguinte código, só confere antes se você já não tinha adicionado algo antes:

`var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();
https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddCors(options =>
{
options.AddPolicy("AllowAll",
builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
});
});

var app = builder.Build();

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

app.UseHttpsRedirection();
app.UseCors("AllowAll");
app.UseAuthorization();
app.MapControllers();
app.Run();
`

Kestrel #2

Antes de fazer este passo recomendo que faça o passo anterior e teste

O que é?

Kestrel é um servidor integrado fornecido pelo ASP.NET Core e responsável por processar as requisições HTTP.

Como funciona?

Este servidor funciona otimizando e organizando as requisições que são feitas, a partir das configurações de porta, Ip e certificados SSL. Além disso, é importante que destacar que é multiplataforma.

Resolução

A configuração abaixo deve ser feita dentro do arquivo appsettings.json, sendo HTTP e/ou HTTPs. Lembrando que a porta vai alterar de acordo com o que você usa.

{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://0.0.0.0:5111"
},
"Https": {
"Url": "https://0.0.0.0:5001",
"Certificate": {
"Path": "certificate.pfx",
"Password": "password"
}
}
}
}
}

Liberando portas no firewall

Siga os prints abaixo. Lembrando que faremos isso pra entrada e para saida.

Entrada

Image description

Image description

Image description

Image description

Image description

Saída

Image description

Image description

Image description

Image description

💖 💪 🙅 🚩
nathanndos
Nathan Silva

Posted on July 9, 2024

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

What was your win this week?
weeklyretro What was your win this week?

November 29, 2024

Where GitOps Meets ClickOps
devops Where GitOps Meets ClickOps

November 29, 2024

How to Use KitOps with MLflow
beginners How to Use KitOps with MLflow

November 29, 2024

Modern C++ for LeetCode 🧑‍💻🚀
leetcode Modern C++ for LeetCode 🧑‍💻🚀

November 29, 2024