1、文件1:
interface CorsInfo {
/**
* 请求头token校验信息
*/
String HTTP_HEADER_X_AUTH_VALUE = "X-Auth-Value";
/**
* 请求头用户id
*/
String HTTP_HEADER_X_USER_NAME = "X-User-Name";
/**
* 请求头用户密码
*/
String HTTP_HEADER_X_USER_PASSWORD = "X-User-Password";
/**
* 跨域允许使用请求访问的地址 key
*/
String CORS_ALLOWED_ORIGIN = "allowedOrigin";
/**
* 跨域允许使用的请求头参数,可以少不能多key
*/
String CORS_ALLOWED_HEADER = "allowedHeader";
/**
* 跨域允许使用的请求方法类型key
*/
String CORS_ALLOWED_METHOD = "allowedMethod";
/**
* 跨域允许使用的预连接的有效时间(秒)key
*/
String CORS_MAX_AGE = "maxAge";
/**
* 跨域允许携带Cookie
*/
String CORS_ALLOW_CREDENTIALS = "allowCredentials";
}
2、文件2
@Configuration
public class CorsConfig {
@Resource
private CustomConfig customConfig;
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", buildConfig());
return new CorsFilter(source);
}
private CorsConfiguration buildConfig() {
CorsConfiguration corsConfiguration = new CorsConfiguration();
//服务器允使的请求域名
corsConfiguration.addAllowedOrigin(customConfig.getCorsMap().get(CORS_ALLOWED_ORIGIN));
//服务器支持的所有头信息字段,不限于浏览器在"预检"中请求的字段
corsConfiguration.addAllowedHeader(customConfig.getCorsMap().get(CORS_ALLOWED_HEADER));
//服务器支持的所有跨域请求的方法
corsConfiguration.addAllowedMethod(customConfig.getCorsMap().get(CORS_ALLOWED_METHOD));
//本次预检请求的有效期,单位为秒,有效期内不用发出另一条预检请求
corsConfiguration.setMaxAge(Long.valueOf(customConfig.getCorsMap().get(CORS_MAX_AGE)));
//允许携带Cookie跨域
corsConfiguration.setAllowCredentials(Boolean.parseBoolean(customConfig.getCorsMap().get(CORS_ALLOW_CREDENTIALS)));
return corsConfiguration;
}
}
3、文件3
@Configuration
@ConfigurationProperties(prefix = "custom")
@PropertySource("classpath:custom.properties")
public class CustomConfig {
/**
* 跨域相关参数属性集合
*/
private Map<String, String> corsMap;
public Map<String, String> getCorsMap() {
return corsMap;
}
public void setCorsMap(Map<String, String> corsMap) {
this.corsMap = corsMap;
}
}
4、创建一个配置文件custom.properties
custom.corsMap[allowedOrigin]=*
custom.corsMap[allowedHeader]=*
custom.corsMap[allowedMethod]=*
custom.corsMap[maxAge]=7200
custom.corsMap[allowCredentials]=true