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

[Dúvida] CORS - Erro ao efetuar o requisito GET

Boa noite, Eu construí uma API Restful seguindo o curso da alura. Apenas troquei o JWT por JWT+Refresh token. No Postman, tudo funciona.

Porém, estamos criando (eu e o Eduardo que deu reply logo abaixo) um front-end vue e quando é feita uma requisição get com bearer token o seguinte é retornado:

A requisição get com erro e uma espécie de "cópia" dela com o método options com esse erro:

No 'Access-Control-Allow-Origin' header is present on the requested resource.

@Configuration
@EnableGlobalMethodSecurity(
        // securedEnabled = true,
        // jsr250Enabled = true,
        prePostEnabled = true)
public class SecurityConfiguration {

    @Autowired
    UserDetailsServiceImpl userDetailsService;

    @Autowired
    private AuthEntryPointJwt unauthorizedHandler;

    @Bean
    public AuthTokenFilter authenticationJwtTokenFilter() {
        return new AuthTokenFilter();
    }

    @Bean
    public DaoAuthenticationProvider authenticationProvider() {
        DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider();

        authProvider.setUserDetailsService(userDetailsService);
        authProvider.setPasswordEncoder(passwordEncoder());

        return authProvider;
    }

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new MyPasswordEncoder();
    }

    @Bean
    public AuthenticationManager authenticationManager(AuthenticationConfiguration authConfig) throws Exception {
        return authConfig.getAuthenticationManager();
    }

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http.csrf().disable()
                .exceptionHandling().authenticationEntryPoint(unauthorizedHandler).and()
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
                .authorizeRequests()
                .antMatchers("/auth/**").permitAll()
                .antMatchers(HttpMethod.GET, "/api/informativos").permitAll()
                .anyRequest().authenticated();

        http.authenticationProvider(authenticationProvider());

        http.addFilterBefore(authenticationJwtTokenFilter(), UsernamePasswordAuthenticationFilter.class);

        return http.build();
    }

    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**").allowedOrigins("*").allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS", "HEAD", "TRACE", "CONNECT");
            }
        };
    }
}
2 respostas
getConsultor: function () {

      api.get('https://url/api/consultores', {headers: {
        "Authorization": "Bearer " + this.token,
        "Access-Control-Allow-Origin": "*"
      }}).then(
        response => {
          console.log(response);
        }, error => {
          console.log(error);
        }
      );
    }

Para complementar, acima está a função que faz essa requisição para obter esses registros. É o jeito correto passar o token assim? Também é interessante o fato de que a funcionalidade de login e logout funcionam.

solução!

Gente, resolvido. Seguimos o tutorial neste link: https://stackoverflow.com/questions/49832052/cors-error-and-403-response-with-jwt-token

Talvez ajude outros alunos

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software