Estoy usando el marco de arranque de primavera, he implementado dos puntos finales de descanso, tipo obtener y escribir solicitudes de publicación. Las solicitudes de obtención y publicación funcionan bien si accedemos a esos extremos desde el mismo origen. Cuando trato de acceder a esos puntos finales desde la aplicación de reacción, la solicitud Obtener funciona bien, pero cuando llego al segundo punto final (solicitud posterior) obtengo el código de estado 401. No pude encontrar ningún error cors en la consola del navegador.
Código de front-end.
const _HEADERS = { 'Content-Type': 'application/json', 'x-xsrf-token': getCSRFToken(), 'Authorization': 'Basic ' + btoa("admin" + ":" + "admin") } let fetchData = async (resource:string, method:string, postData:Object, mode:string = _SAME_ORGIN, formData:any = null, headers:any = _HEADERS ) => { let initObj = {}; if( method === "GET" ) { initObj = { method: method, mode: mode, cache: 'no-cache', headers: headers }; } else { initObj = { method: method, mode: mode, cache: 'no-cache', headers: headers, body: formData === null? JSON.stringify(postData): formData }; } return await fetch( new Request(resource, initObj) ); }Código de fondo
Global cors @Bean public WebMvcConfigurer configure() { return new WebMvcConfigurer() { @Override public void addCorsMappings(CorsRegistry registry) { Boolean corsEnabled = Boolean.parseBoolean( environment.getProperty("application.cors.enabled")); if( corsEnabled != null && corsEnabled == true ) { registry.addMapping("/**").allowedOrigins("http://localhost:8000"); } } }; } Security http.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()) .and().authorizeRequests((requests) -> requests.anyRequest().authenticated()); http.formLogin(); http.httpBasic(); if (corsEnabled != null && corsEnabled == true) { http.cors(); }Actualizar seguridad.
http.csrf().disable().authorizeRequests((requests) -> requests.anyRequest().authenticated()); http.formLogin(); http.httpBasic(); if (corsEnabled != null && corsEnabled == true) { http.cors(); }