2017-10-03 2 views
0

Je n'ai pas trouvé la réponse à ma question sur Internet. Quelle est la bonne façon de configurer un CORS global pour une application non-web (json api uniquement)?Quelle est la bonne façon de régler CORS dans le nouveau printemps?

J'ai trouvé org.springframework.web.cors.CorsConfiguration mais je ne trouve pas où il utilise. Aidez-moi, s'il vous plaît. Je ne sais pas quoi faire.

Ma version de printemps: 2.0.0.M4

+0

Si ce ne est pas une application web vous n'avez pas un problème CORS. – Deadron

+0

Pour développer un peu ce que dit @Deadron, CORS est seulement utilisé par les navigateurs si votre application ne va pas être utilisée par les navigateurs CORS n'est pas pertinent. – Oleg

Répondre

0

Jetez un oeil here.

Fondamentalement, une façon de le faire est d'avoir une classe de configuration:

@Configuration 
@EnableWebMvc 
public class WebConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void addCorsMappings(CorsRegistry registry) { 
     registry.addMapping("/**") 
     .allowedOrigins("http://domain2.com") 
     .allowedMethods("PUT", "DELETE") 
      .allowedHeaders("header1", "header2", "header3") 
     .exposedHeaders("header1", "header2") 
     .allowCredentials(false).maxAge(3600); 
    } 
} 

Ou vous pouvez utiliser un filtre de base.

@Configuration 
public class MyConfiguration { 

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

Il y a aussi une annotation @CorsOrigin configurer par contrôleur:

@CrossOrigin(origins = "http://domain2.com", maxAge = 3600) 
@RestController 
@RequestMapping("/account") 
public class AccountController {...