【问题标题】:Which way is correct for setting CORS in new Spring?在新的 Spring 中设置 CORS 的正确方法是什么?
【发布时间】:2017-10-03 23:12:26
【问题描述】:

我没有在 Internet 上找到我的问题的答案。为非 Web 应用程序设置全局 CORS 的正确方法是什么(仅限 json api)?

我找到了 org.springframework.web.cors.CorsConfiguration 但我找不到它在哪里使用。请帮我。我不知道该怎么办。

我的春季版:2.0.0.M4

【问题讨论】:

  • 如果它不是 Web 应用程序,则说明您没有 CORS 问题。
  • 为了扩展@Deadron所说的,CORS仅在您的应用程序不被浏览器使用时才会被浏览器使用 CORS是无关紧要的。

标签: java spring cors


【解决方案1】:

看看here

基本上一种方法是有一个配置类:

@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);
    }
}

或者您可以使用基本过滤器。

@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;
    }
}

还有一个@CorsOrigin注解来配置每个控制器:

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

【讨论】:

    猜你喜欢
    • 2021-06-06
    • 2023-03-23
    • 1970-01-01
    • 2022-11-08
    • 2017-12-17
    • 2021-05-19
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多