1
resposta

Desabilitar Cors

Tendo como base o que foi montado durante o curso de Java Spring Boot Parte 2.

Como faço para desabilitar o CORS?

Estou montando uma aplicação em Angular 9 e utilizo o Spring Boot como API back end Engraçado é que em requisições do tipo GET funcionam normalmente, contudo requisições dos outros tipos não.

Exemplo abaixo da função que habilita as requisições sem o Authorization, pelo Postman, todas as requisições funcionam normalmente, mas pela aplicação em Angular, não.

//Configura Autorizacao @Override protected void configure(HttpSecurity http) throws Exception { http.headers().frameOptions().disable() .and().authorizeRequests() .antMatchers("/h2-console/").permitAll() .antMatchers(HttpMethod.POST, "/auth").permitAll() .antMatchers(HttpMethod.POST, "/usuarios").permitAll() .antMatchers(HttpMethod.GET, "/usuarios/").permitAll() .antMatchers(HttpMethod.GET, "/topicos").permitAll() .antMatchers(HttpMethod.GET, "/topicos/").permitAll() .antMatchers(HttpMethod.GET, "/respostas").permitAll() .antMatchers(HttpMethod.GET, "/respostas/").permitAll() .antMatchers(HttpMethod.GET, "/livros").permitAll() .antMatchers(HttpMethod.GET, "/livros/").permitAll() .antMatchers("/h2-console/").permitAll() .anyRequest().authenticated() .and().csrf().ignoringAntMatchers("/h2-console/**") .and().formLogin() .and().csrf().disable() .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) .and().addFilterBefore(new AutenticacaoViaTokenFiltro(tokenService, usuarioRepository), UsernamePasswordAuthenticationFilter.class); }

1 resposta

Oi André,

Para utilizar uma aplicação Frontend em JavaScript você precisará configurar o CORS na API com Spring Boot.

Basta criar a seguinte classe no projeto:

@Configuration
public class CorsConfiguration implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
            .allowedOrigins("http://localhost:3000")
            .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS", "HEAD", "TRACE", "CONNECT");
    }
}

Sendo que no exemplo acima o localhost:3000 seria endereço da app frontend.

Além disso, na classe SecurityConfiguration precisamos avisar ao Spring que a aplicação vai receber requisições CORS, adicionando a seguinte configuração no método configure(HttpSecurity http):

...
.and().csrf().disable().and().cors()
...

O restante continua igual.

Bons estudos!