Springboot内部跨域配置

@Configuration
public class UserConfig extends WebMvcConfigurationSupport {

    /**
     * 跨域处理
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**") //表示所有的请求路径都经过跨域处理
                .allowedOrigins("*")
                /*.allowedMethods("*")
                .allowedHeaders("*")*/
                .allowedMethods("POST", "GET", "DELETE", "OPTIONS", "PUT")
				.allowedHeaders("Content-Type", "Content-Length", "Accept", "X-Requested-With", "remember-me",
                        "auth", "Cookie", "Authorization", "AppId")
                //允许在请求头里存放信息,后端通过请求头来获取前端传来的信息
				.exposedHeaders("Authorization", "AppId")
                //设置是否允许跨域传cookie
				.allowCredentials(true)
                .maxAge(3600);
        super.addCorsMappings(registry);
    }


    /**
     * 对静态资源的配置
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/*")
                .addResourceLocations("classpath:/static/");
        registry.addResourceHandler("doc.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

    /**
     * json返回中文乱码处理
     * @param converters
     */
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        super.configureMessageConverters(converters);
        //定义一个convert转换消息的对象
        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();

        //添加fastjson的配置信息,比如:是否要格式化返回的json数据
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        //将为null的字段值显示为""
        //DisableCircularReferenceDetect:消除循环引用
        fastJsonConfig.setSerializerFeatures(SerializerFeature.DisableCircularReferenceDetect,
                SerializerFeature.PrettyFormat,
                //SerializerFeature.WriteNullListAsEmpty, //当集合为空的时候也返回空值
                SerializerFeature.WriteNullStringAsEmpty,
                SerializerFeature.WriteMapNullValue,
                SerializerFeature.WriteNullBooleanAsFalse,
                SerializerFeature.WriteEnumUsingToString,
                SerializerFeature.WriteNonStringKeyAsString);
        fastConverter.setFastJsonConfig(fastJsonConfig);

        //解决Long转json精度丢失的问题
        SerializeConfig serializeConfig = SerializeConfig.globalInstance;
        serializeConfig.put(BigInteger.class, ToStringSerializer.instance);
        serializeConfig.put(Long.class, ToStringSerializer.instance);
        serializeConfig.put(Long.TYPE, ToStringSerializer.instance);
        fastJsonConfig.setSerializeConfig(serializeConfig);

        //处理中文乱码问题(不然出现中文乱码)
        List<MediaType> fastMediaTypes = new ArrayList<MediaType>();
        fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
        fastConverter.setSupportedMediaTypes(fastMediaTypes);

        //将convert添加到converters当中
        converters.add(fastConverter);
    }
发布了237 篇原创文章 · 获赞 235 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/LRXmrlirixing/article/details/99590696
今日推荐