过滤器跨域配置

配置类

public class CorsConfig {
    //需要什么对象用注解@Bean来获取,返回值是要取得的对象类型
    //此时需要把过滤器注册到servletContext中
    CrmConfig.Cors c = CrmConfig.getCors();//获得内部类对象
    @Bean
    public FilterRegistrationBean corsFilter(){
        //内部提供了register方法注册过滤器,同时注册到servletContext
        UrlBasedCorsConfigurationSource us = new UrlBasedCorsConfigurationSource();
        Map<String, CorsConfiguration> map = new HashMap<>(10);
        CorsConfiguration ccf = new CorsConfiguration();
        ccf.setAllowCredentials(c.getCredentials());
        ccf.setAllowedHeaders(c.getHeaders());
        ccf.setAllowedMethods(c.getMethods());
        ccf.setExposedHeaders(c.getExposedHeader());
        ccf.setAllowedOrigins(c.getOrigins());
        map.put(c.getPath(),ccf);
        us.setCorsConfigurations(map);
        FilterRegistrationBean fb = new FilterRegistrationBean(new CorsFilter(us));//传一个跨域过滤器
        //设置执行顺序
        fb.setOrder(1);
        return fb;
    }
}

配置对象(配置参数类)

@Component
@ConfigurationProperties(prefix = "crm")
public class CrmConfig {


    //自定义一个配置对象,用来存放自定义配置数据(不是配置类,是供配置类依赖的参数配置)
    //把自定义对象注入容器(放在主配置类层级下,不然扫描不到)
    //启用配置文件注解并设置前缀
    private Map<String,Object> aaa;

    public static Cors getCors() {
        return cors;
    }

    public static void setCors(Cors cors) {
        CrmConfig.cors = cors;
    }

    private static Cors cors;  //将内部配置类写为成员变量并设置get set 方法

//    内部配置类
    public static class Cors{
        private String path;
        private List<String> methods;

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

    public List<String> getMethods() {
        return methods;
    }

    public void setMethods(List<String> methods) {
        this.methods = methods;
    }

    public List<String> getHeaders() {
        return headers;
    }

    public void setHeaders(List<String> headers) {
        this.headers = headers;
    }

    public List<String> getOrigins() {
        return origins;
    }

    public void setOrigins(List<String> origins) {
        this.origins = origins;
    }

    public Boolean getCredentials() {
        return credentials;
    }

    public void setCredentials(Boolean credentials) {
        this.credentials = credentials;
    }

    public List<String> getExposedHeader() {
        return exposedHeader;
    }

    public void setExposedHeader(List<String> exposedHeader) {
        this.exposedHeader = exposedHeader;
    }

    public Long getMaxAge() {
        return maxAge;
    }

    public void setMaxAge(Long maxAge) {
        this.maxAge = maxAge;
    }

    private List<String> headers;
        private List<String> origins;
        private Boolean credentials;
        private List<String> exposedHeader;
        private Long maxAge;
    }

    public Map<String, Object> getAaa() {
        return aaa;
    }

    public void setAaa(Map<String, Object> aaa) {
        this.aaa = aaa;
    }
}

配置文件

crm:
  cors:
    path: /**
    methods: [GET,POST,PUT,DELETE,OPTIONS]
    header: []
    origins: [http://localhost:8082]
    credentials: true
    exposeHeaders: [admin_token]
    maxAge: 1800
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值