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);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值