Utilizzo il boot a molla per effettuare un semplice servizio di assistenza. Per consumarlo in Angular 2, ho riscontrato un problema con CORS durante il recupero di token su oauth/token endpoint.Opzioni di servizio di arresto dello stivale a molla 401 su oauth/token
Il messaggio di errore in Chrome è di seguito.
zone.js:101 OPTIONS http://192.168.0.9:8080/api/oauth/token
XMLHttpRequest cannot load http://192.168.0.9:8080/api/oauth/token. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. The response had HTTP status code 401.
I file correlati sono al di sotto.
MyConfig.java
@Configuration
public class MyConfig {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("**")
.allowedOrigins("*").allowedMethods("POST, GET, HEAD, OPTIONS")
.allowCredentials(true)
.allowedHeaders("Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers")
.exposedHeaders("Access-Control-Allow-Origin,Access-Control-Allow-Credentials")
.maxAge(10);
}
};
}
}
OAuth2ResourceServerConfig.java
@Configuration
@EnableResourceServer
class OAuth2ResourceServerConfig extends ResourceServerConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.anonymous()
.and()
.authorizeRequests()
.antMatchers(HttpMethod.OPTIONS,"**").permitAll()
.antMatchers("/authenticated/**").authenticated()
;
}
}
Sono nuovo di Java e la primavera. Ho trovato alcune domande simili, come ad esempio OAuth2 - Status 401 on OPTIONS request while retrieving TOKEN, ma davvero non capisco come farlo funzionare nel boot di primavera.
Nota: l'endpoint del controller di riposo normale funziona correttamente. Il problema è oauth/token, la richiesta di opzioni restituisce lo stato 401.
Mostrami un codice di lavoro in avvio di primavera. Grazie!
Ho trovato questa risposta in un altro post. Ma in Spring Boot, raccomandava l'uso di WebMvcConfigurerAdapter come mostrato nel mio codice piuttosto che nel filtro. Puoi vedere che hanno un codice simile ad eccezione della parte "OPZIONI". Quindi mi chiedo se è possibile aggiungere un simile codice "OPZIONI" al mio file? Grazie. – weijun
il tuo codice funziona! :) – weijun
Grazie mille !!!!! Mi hai salvato la giornata dopo aver passato circa 4 giorni con questo problema !!! –