您的位置:首页 > 编程语言 > Java开发

Java spring 框架跨域问题处理

2016-07-15 18:10 555 查看
                                                                  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);

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  框架