spring boot 跨域同源策略filter

来源:互联网 发布:南京厚德软件 编辑:程序博客网 时间:2024/06/08 00:59

最近做一个主从中心的系统,由于时间赶得急,考虑通过ajax跨域来解决这个主,分中心的相互调用,这样后台代码几乎不用修改,搜搜了资料,spring boot是支持全局配置cors。

跨域资源共享 (CORS)是一个被绝大部分浏览器实现的W3C标准,CORS允许你灵活的指定跨域请求是否授权,而强大的Spring boot是支持全局配置cors的;废话不多说,上代码:




import javax.servlet.Filter;


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
@Configuration
public class SpringMvcConfig {


    /**
     * 解决同源策略问题的filter
     * @return
     */
    @Bean
    public Filter corsFilter(){
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration();
        config.addAllowedOrigin("*");
        config.addAllowedHeader("*");
        config.addAllowedMethod("OPTIONS");
        config.addAllowedMethod("HEAD");
        config.addAllowedMethod("GET");
        config.addAllowedMethod("PUT");
        config.addAllowedMethod("POST");
        config.addAllowedMethod("DELETE");
        config.addAllowedMethod("PATCH");
        config.setAllowCredentials(true);
        source.registerCorsConfiguration("/**", config);
        return new CorsFilter(source);
    }
}

通过上面那个类,就可以让你的Spring boot 项目可以跨域访问,config.addAllowedHeader(“”)这个参数里可以设置指定可以请求访问ur,也大大加大了项目的安全性。

具体细节,可以访问:http://ifeve.com/spring-boot-27-1-11/