//package com.energy.manage.service.config;
//
//import com.fasterxml.jackson.databind.DeserializationFeature;
//import com.fasterxml.jackson.databind.ObjectMapper;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.http.converter.HttpMessageConverter;
//import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
//import org.springframework.web.servlet.config.annotation.CorsRegistry;
//import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
//
//import java.util.List;
//
///**
// * 跨域配置
// */
//@Configuration
//public class CrossConfig implements WebMvcConfigurer {
//
//    @Override
//    public void addCorsMappings(CorsRegistry registry) {
//        registry.addMapping("/**")
//                //.allowedHeaders("Origin", "X-Requested-With", "Content-Type", "Accept", "X-Token", "content-type")
//                .allowedHeaders("*")  //服务器允许的请求头
//                .allowedMethods("POST", "PUT", "GET", "OPTIONS", "DELETE")  //服务器允许的请求方法
//                .allowCredentials(true)  //允许带 cookie 的跨域请求
//                .allowedOrigins("*")  //服务端允许哪些域请求资源
//                .maxAge(3600);   //预检请求的缓存时间
//    }
//
//
//    @Override
//    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
//        converters.add(mappingJackson2HttpMessageConverter());
//    }
//
//    @Bean
//    public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(){
//        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
//        ObjectMapper objectMapper = new ObjectMapper();
//        //未知属性忽略
//        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
//        converter.setObjectMapper(objectMapper);
//        return converter;
//    }

//
//    //注册Filter
//    @Bean
//    public FilterRegistrationBean filterRegistrationBean() {
//        FilterRegistrationBean reg = new FilterRegistrationBean();
//        //使用框架中的过滤器类
//        CharacterEncodingFilter filter = new CharacterEncodingFilter();
//        //指定使用的编码方式
//        filter.setEncoding("utf-8");
//        //指定request ， response都使用encoding的值
//        filter.setForceEncoding(true);
//        reg.setFilter(filter);
//        //指定 过滤的url地址
//        reg.addUrlPatterns("/*");
//        return reg;
//    }



//    @Override
//    public void addCorsMappings(CorsRegistry registry) {
//        registry.addMapping("/**")
//                .allowedOrigins("*")
//                .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
//                .maxAge(3600)
//                .allowCredentials(true);
//    }

//    @Bean
//    public FilterRegistrationBean corsFilter() {
//        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
//        CorsConfiguration config = new CorsConfiguration();
//        config.setAllowCredentials(true);
//        /* 设置你要允许的网站域名，如果全允许则设为 * */
//        config.addAllowedOrigin("*");
//        // 如果要限制 HEADER 或 METHOD 请自行更改
//        config.addAllowedHeader("*");
//        config.addAllowedMethod("*");
//        config.setMaxAge(86400L);
//        source.registerCorsConfiguration("/**", config);
//        FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
//        // 启动顺序
//        bean.setOrder(0);
//        return bean;
//    }

//    private CorsConfiguration buildConfig() {
//        CorsConfiguration corsConfiguration = new CorsConfiguration();
//        // 允许放行那些原始域
//        corsConfiguration.addAllowedOrigin("*");
//        // 允许放行那些原始域（头部信息）`
//        corsConfiguration.addAllowedHeader("*");
//        // 允许放行那些原始域（请求方式）
//        corsConfiguration.addAllowedMethod("*");
//        // 是否发送Cookie信息
//        corsConfiguration.setAllowCredentials(true);
//        return corsConfiguration;
//    }
//
//    @Bean
//    public CorsFilter corsFilter() {
//        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
//        source.registerCorsConfiguration("/**", buildConfig()); // 4
//        return new CorsFilter(source);
//    }





//}
