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

CORS Error

Criei uma aplicação front-end para consultar a API feita pelo o curso, mas ao tentar autenticar o usuario , dar o seguinte erro:

Access to XMLHttpRequest at 'http://localhost:8080/api/auth' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status

Creio que seja na API :(

9 respostas

Fala Mateus, tudo bem?

Você vai precisar configurar o CORS no seu projeto, dá uma olhada aqui: https://www.baeldung.com/spring-cors

Oi Mateus,

É exatamente o que o Otávio falou.

Pra resolver basta você criar a seguinte classe no pacote configurations:

@Configuration
public class CorsConfiguration implements WebMvcConfigurer {

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

Bons estudos!

Bom dia senhores, acabei de adicionar a configuração que o Rodrigo me passou, mas ainda não funcionou, segue o link do repositório do projeto no github: https://github.com/LittleNogueira/library-back

Obrigado pela ajuda!

:)

Oi Mateus,

Ah sim, você já está com o Spring Security habilitado, então vai precisar adicionar essa linha no método configure(HttpSecurity http) da classe SecurityConfigurations:

.and().cors()

Seu método vai ficar assim:

 http.authorizeRequests()
    .antMatchers(HttpMethod.POST, "/auth").permitAll()
    .anyRequest().authenticated()
    .and().cors()
    .and().csrf().disable()
    .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
    .and().addFilterBefore(new TokenFilter(tokenService,userRepository), UsernamePasswordAuthenticationFilter.class);

Veja se assim resolve.

Ainda não resolveu :(

Oi Matheus,

Testei aqui com o seu projeto e funcionou pra mim.

Verifica se você lembrou de reiniciar o projeto, pois reparei que no seu projeto você não ta utilizando o Spring Boot DevTools.

Restartei o projeto N vezes, mas ainda não consegui.

Poderia me mandar este projeto ? :)

solução!

É o seu projeto mesmo, que está no GitHub: https://github.com/LittleNogueira/library-back

A única coisa que ele não tinha e eu adicionei foi a configuração and().cors() na classe SecurityConfigurations.

Alias, no seu projeto você colocou o prefixo /api, então tem que tirar o /api da classe CorsConfigurations pois o Spring já vai consderar esse prefixo automaticamente:

@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");
    }
}