最近做一个主从中心的系统,由于时间赶得急,考虑通过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/