Tengo un punto final de back-end y cada vez que envío una solicitud a través de Postman , funciona y devuelve una lista de clientes mediante el token jwt en Postman.
Pero quiero obtener la lista de una aplicación de reacción usando la solicitud de obtención de axios, pero no puedo.
Verifiqué la respuesta a esta pregunta y apliqué.
Aquí está mi código (acabo de codificar el token para la prueba y el token es correcto porque lo probé en el cartero):
export async function getCustomerList() { let tok = "Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJxcXFxIiwiZXhwIjoxNjUxMjcxNjk4LCJpYXQiOjE2NTEyNTM2OTh9.Fcjtz2_uCU0kybV1GX4TS6sbQ8E_TXNlih_bbxW0vCcQDRyU-F2rDbaOI7Iuog5VdoBU9_SM9gqtuCF5ZPzlzQ"; return axios.get("http://localhost:8080/customer/list", {headers: {Authorization : tok}}); }Cuando llamo a este código (marqué la clase de controlador de punto final de la aplicación Spring Boot como @CrossOrigin para permitir cors) la respuesta del backend tiene 403 Prohibido y el registro de la consola es un error de política CORS como:
Que me estoy perdiendo aqui ? Pensé en los encabezados, pero en realidad tampoco estoy enviando ningún encabezado a través del cartero.
Finalmente lo resolví, pero en realidad no está relacionado con el front-end. Y el código react-axios funciona bien. Incluso si especifiqué @CrossOrigin en el lado de la bota de resorte todavía necesito trabajo por hacer. He agregado http.cors() a la configuración de backend como:
@Override protected void configure(HttpSecurity http) throws Exception { http.csrf() .disable() .authorizeRequests() .antMatchers("/authenticate") .permitAll() .anyRequest() .authenticated() .and() .sessionManagement() .sessionCreationPolicy(SessionCreationPolicy.STATELESS); http.addFilterBefore(jwtFilter, UsernamePasswordAuthenticationFilter.class); http.cors(); }