Lädt...


🔧 Configurando CORS Global para API Springboot


Nachrichtenbereich: 🔧 Programmierung
🔗 Quelle: dev.to

Quando temos a necessidade de consumir (ou enviar) dados de uma API para apresentar no frontend construímos diversos endpoints nela para nos auxiliar nesta tarefa e com isso sempre barramos no famigerado CORS (Cross-Origin Resource Sharing) e ele sempre apresenta o mesmo erro no console:

CORS erro - imagem ilustrativa

Então a primeira ação que temos é ir na nossa API, procurar a Controller e adicionar acima no endpoint a anotação do Springframework...

@CrossOrigin ou @CrossOrigin(origins = "*")

...nos livrar do problema e seguir o desenvolvimento da tarefa.
Então nossa API vai crescendo e todo o endpoint exposto para o front vai receber essa mesma anotação do @CrossOrigin.

Chega um momento que você se pergunta se ainda é realmente necessário ter essa anotação ali, ou a validação do Sonar está avisando que esse CORS é uma vulnerabilidade no seu código.

Há uma maneira, até simples, de fazer essa configuração de CORS porém num escopo Global, sem precisar adicionar em todos os endpoints. Para isso, basta criar a seguinte classe na sua estrutura:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
@EnableWebMvc
class CORSConfiguration implements WebMvcConfigurer {

    @Value("${config.cors.allowed-origins}")
    String[] origins;

    @Value("${config.cors.allowed-headers}")
    String[] headers;

    @Value("${config.cors.allowed-methods}")
    String[] methods;

    @Value("${config.cors.max-age}")
    long maxAge;

    @Value("${config.cors.exposed-headers}")
    String[] exposed;

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowCredentials(true).maxAge(maxAge)
                .allowedOriginPatterns(origins).allowedHeaders(headers)
                .allowedMethods(methods).exposedHeaders(exposed);
    }
}

e também alterar o seu arquivo properties.yml adicionado a seguinte estrutura:

# CORS config
config:
  cors:
    allowed-origins: http://localhost:4200, https://www.url-do-front.com.br
    allowed-methods: GET, POST, PATCH, PUT, DELETE, OPTIONS, HEAD
    max-age: 3600
    allowed-headers: "*"
    exposed-headers: "*"

Explicando aqui:
A classe de configuração implementa a interface nativa do Spring MVC chamada WebMvcConfigurer e com isso você precisa sobrescrever o método: void addCorsMappings(CorsRegistry registry).
Esse método, adiciona em tempo de configuração, as configurações de CORS informadas do arquivo .yml que são recuperadas de lá pela anotação @Value, também do Spring.

Nota: No método addCorsMapping, para a classe CorsRegistry, precisa adicionar o método allowCredentials(true), com ele o Swagger não ficará solicitando credenciais de acesso para carregar a página inicial.

Então quando você der o start no projeto, as configurações serão carregadas e adicionadas ao contexto do CORS, com isso não precisa mais da anotação @CrossOrigin em cada endpoint.

Mas claro, lembrando que cada um tem sua necessidade de implementação do CORS, que isso varia de acordo com cada projeto.

Para minha necessidade atual, funcionou perfeitamente. 😊

Até qualquer dia... 😉

...

🔧 Configurando CORS Global para API Springboot


📈 95.44 Punkte
🔧 Programmierung

🔧 Configurando o Terraform para funcionar corretamente com o LocalStack


📈 39.3 Punkte
🔧 Programmierung

🔧 Configurando pipeline com github actions para um projeto React


📈 39.3 Punkte
🔧 Programmierung

🔧 Configurando Amazon SES para envio de e-mail


📈 39.3 Punkte
🔧 Programmierung

🔧 Understanding CORS, CSRF attacks and enabling valid CORS


📈 33.14 Punkte
🔧 Programmierung

📰 CORS: How to Use and Secure a CORS Policy with Origin


📈 33.14 Punkte
📰 IT Security Nachrichten

🕵️ rack-cors up to 0.4.0 CORS Request privilege escalation


📈 33.14 Punkte
🕵️ Sicherheitslücken

🕵️ rack-cors bis 0.4.0 CORS Request erweiterte Rechte


📈 33.14 Punkte
🕵️ Sicherheitslücken

🔧 Configurando servidor local no Linux: Nginx, MySQL e PHP


📈 26.39 Punkte
🔧 Programmierung

🔧 Configurando perfis do AWS CLI no seu terminal


📈 26.39 Punkte
🔧 Programmierung

🔧 Configurando Spring Boot com PostgreSQL no ambiente Linux: Passo a passo


📈 26.39 Punkte
🔧 Programmierung

🔧 Configurando o Spring com JPA e Microsoft SQL Server


📈 26.39 Punkte
🔧 Programmierung

🔧 Configurando Ferramentas de Desenvolvimento no Ubuntu em ambiente corporativo


📈 26.39 Punkte
🔧 Programmierung

🔧 Configurando NeoVim + Elixir


📈 26.39 Punkte
🔧 Programmierung

🔧 Kotlin DSL: Configurando JaCoco


📈 26.39 Punkte
🔧 Programmierung

🔧 Melhorando e configurando seu novo Shell linux. Pt-2


📈 26.39 Punkte
🔧 Programmierung

🔧 Instalando e Configurando o Servidor de E-mail Carbonio CE na AWS (Substituto do Zimbra)


📈 26.39 Punkte
🔧 Programmierung

🔧 Configurando o Spring Boot Admin: Server e Client


📈 26.39 Punkte
🔧 Programmierung

🕵️ NetApp Element Plug-In for vCenter Server SpringBoot Framework Remote Code Execution


📈 26.08 Punkte
🕵️ Sicherheitslücken

🔧 Image uploader with Springboot, Cloudinary, Docker and PostgreSQL


📈 26.08 Punkte
🔧 Programmierung

🔧 Logging in SpringBoot


📈 26.08 Punkte
🔧 Programmierung

🔧 Get started with Fullstack Development: React + SpringBoot + MySQL + Postman


📈 26.08 Punkte
🔧 Programmierung

🔧 @Autowired magic in SpringBoot


📈 26.08 Punkte
🔧 Programmierung

🔧 Introduction to Apache Kafka Error Handling (Springboot)


📈 26.08 Punkte
🔧 Programmierung

🕵️ CVE-2024-24060 | springboot-manager 1.6 /sys/user cross site scripting


📈 26.08 Punkte
🕵️ Sicherheitslücken

🕵️ CVE-2024-24061 | springboot-manager 1.6 /sysContent/add cross site scripting


📈 26.08 Punkte
🕵️ Sicherheitslücken

🕵️ CVE-2024-24062 | springboot-manager 1.6 /sys/role cross site scripting


📈 26.08 Punkte
🕵️ Sicherheitslücken

🕵️ CVE-2024-24059 | springboot-manager 1.6 unrestricted upload


📈 26.08 Punkte
🕵️ Sicherheitslücken

🔧 Para quem é a sua homenagem para mulheres na tecnologia?


📈 25.83 Punkte
🔧 Programmierung

🔧 3 dicas para criar uma estratégia moderna de Testes para Microsserviços Spring Boot


📈 25.83 Punkte
🔧 Programmierung

🔧 Eligiendo la Arquitectura Correcta para Tu Aplicación Web: Un Enfoque Práctico para Startups


📈 25.83 Punkte
🔧 Programmierung

matomo