spring boot cors 容許跨域請求

spring boot cors 實現

官方文檔:https://spring.io/blog/2015/06/08/cors-support-in-spring-frameworkspring

有三種方法,能夠經過在程序中經過代碼,容許跨域請求。api

1 聲明一個CORS過濾器

統一在一個類中,實現對全部跨域的配置。跨域

/**
 * @author pengpj
 * @date 2018/5/21
 */
@Slf4j
@Configuration
public class MyConfiguration {

    /**
     * https://spring.io/blog/2015/06/08/cors-support-in-spring-framework
     *
     * @return filterRegistrationBean for cors filter
     */
    @Bean
    public FilterRegistrationBean registrationCorsFilter() {
        log.info("registration cors filter...");
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true);

        //容許跨域的域名,可配置多個
       config.addAllowedOrigin("http://domain1.com");

        config.addAllowedHeader("*");
        config.addAllowedMethod("*");

        //請求接口過濾
        source.registerCorsConfiguration("/api/open/**", config);
        FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
        bean.setOrder(0);
        return bean;
    }

}

2 @CrossOrigin 註解

在 Controller 層的類,或是降級到方法上,經過此註解標識,並配置當前 URL 的跨域請求信息。app

類上註解以下:cors

@RestController
@RequestMapping(value = "/api/open/")
@CrossOrigin(
        origins = {"http://domain1.com", "https://domain1.com"},
        methods = {RequestMethod.OPTIONS, RequestMethod.GET, RequestMethod.DELETE, RequestMethod.POST}
)
public class OpenController {

}

在方法上註解同理,在方法上加上 @CrossOrigin ,並配置。dom

3 WebMvcConfigurer#addCorsMappings(CorsRegistry)

經過 WebMvcConfigurer 對映射進行配置,待嘗試spa

相關文章
相關標籤/搜索