Java spring 框架跨域问题处理

                                                                  Spring  跨域问题处理办法

it 技术革新 真快。15年16年 上半年开始流行 前后端分离技术。前端发送 ajax 请求。后端同统一定义接口返回结构 前端有自己的服务器和架构。后端只需要提供相应的接口就行。由于前后端的 技术分离  不在同一个 域名下。就出出现跨域问题。针对此问题 可以参考 w3c的文档 和spring 官方文档.spring跨域问题只需要 注解一个bean 配置下就行。


        @Bean
        public WebMvcConfigurer corsConfigurer() {
          return new WebMvcConfigurerAdapter() {
             @Override
             public void addCorsMappings(CorsRegistry registry) {
                  registry.addMapping("/**/**").allowedOrigins("前端的ip+端口");
               }
           };
        }

例如 本地前端端口 localhost:4000

registry.addMapping("/**/**").allowedOrigins("localhost:4000");

Spring-web-4.2.6RELEASE.jar 高版本 jar 包完美支持跨域

@Bean
    public CorsFilter corsFilter(Environment env) {


        final CorsConfiguration corsConfiguration = new CorsConfiguration();
 // String origins="http://test.shenghua.com:8080,http://123.23.45.67:8080"//前端  地址
        String origins=env.getProperty("allowed.origin");//配置文件里面读取配置
        log.info("cor allow origin:{}", origins);


        if (StringUtils.isNotEmpty(origins)) {
            IterableUtils.forEach(Splitter.on(",").split(origins), new Closure<String>() {
                @Override
                public void execute(String input) {
                    corsConfiguration.addAllowedOrigin(input);
                }
            });
        } else {
            corsConfiguration.addAllowedOrigin("*");
        }
        corsConfiguration.addAllowedHeader("*"); // 2
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.addExposedHeader("Set-Cookie");
        corsConfiguration.setMaxAge(Long.parseLong(Integer.MAX_VALUE));
        corsConfiguration.setAllowCredentials(true);
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", corsConfiguration); // 4
        return new CorsFilter(source);
    }


版权声明:本文为buzaiguihun原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。