2017-11-16 1 views
1

Ich versuche, eine GET-Anfrage von meinem eckigen 2 Front-End-App zu einem Frühjahr Boot Rest Microservice aufrufen, aber wenn ich anrufe, bekomme ich nur Fehler wie "Kein Zugriff "Control-Allow-Origin-Header ist auf der angeforderten Ressource vorhanden".Spring Boot Microservice Antwort Problem mit Winkel 2 http Anruf

Hier ist meine Controller-Aktionen,

@RequestMapping(value = "/checkUsers", method = RequestMethod.POST) 
public String checkLogin(@RequestBody Users user) throws Exception{ 

    ObjectMapper mapper = new ObjectMapper(); 
    List<Users> useObj = (List<Users>) userRepo.findAll(); 
    return(mapper.writeValueAsString(useObj)); 
} 

Und wenn ich meine Winkel leite, werde ich den obigen Fehler zu bekommen. Ich fügte hinzu, es ist Screenshot

enter image description here

So bin ich verwirrend, dass ist dies von Winkelproblem oder aus Federverschluß Micro Antwort Problem. Kann jemand helfen, seine Lösung zu finden?

+1

Versuchen Sie @ pavle-eftimovski Lösung und ändern Sie Ihren Controller RequestMethod.POST RequestMethod.GET. – Habil

+0

Ja. Ich bin schon gefolgt. Ich habe die Antwort bekommen. Danke für deine Beratung. – Jacob

Antwort

2

Da sie auf verschiedenen Ports ausgeführt werden, müssen Sie Cross-Origin-Ressourcenfreigabe (CORS) auf Serverseite zulassen. Im Frühjahr Boot können Sie das tun, indem @CrossOrigin Anmerkung an die Handler-Methode hinzu:

@CrossOrigin(origins = "http://localhost:4200") 

Es ist auch möglich, diese Anmerkung an Controller-Klasse Ebene hinzuzufügen, als auch, um CORS auf allen Behandlungsmethoden zu ermöglichen, von diese Klasse.

+0

Ja. Ich habe die Antwort bekommen. Es funktioniert. Danke für Ihre Antwort. – Jacob

+0

Gern geschehen. Viel Spaß beim Programmieren :) –

0

Die akzeptierte Antwort ist gut, da sie eine funktionierende Lösung bietet, aber Sie müssen auch die URL des Clients auf der Serverseite in jedem Controller fest codieren. Sie können stattdessen eine globale CORS-Konfiguration einrichten. Wenn Ihre Webkonfiguration die Klasse WebMvcConfigurereAdapter erweitert, können Sie einfach die Methode addCorsMappings überschreiben. Das folgende Beispiel ermöglicht CORS für die gesamte Anwendung:

@Configuration 
public class WebConfig extends WebMvcConfigurereAdapter { 

    @Override 
    public void addCorsMappings(CorsRegistry registry) { 
     registry.addMapping("/**"); 
    } 
} 

Lesen Sie mehr über CORS Unterstützung im Frühjahr here

0

In Sie

@Bean 
    public FilterRegistrationBean corsFilter() { 
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); 
    CorsConfiguration config = new CorsConfiguration(); 
    config.setAllowCredentials(true); 
    config.addAllowedOrigin("*"); 
    config.addAllowedHeader("*"); 
    config.addAllowedMethod("*"); 
    source.registerCorsConfiguration("/**", config); 
    FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source)); 
    return bean; 
    } 

Es global eine Bohne hinzufügen Application.java ist, und es wird arbeite für jeden Controller deines Projekts.

Verwandte Themen