CORS解决spring项目跨域问题

跨域的定义:

http://www.sgl520.top:8080

协议 + 域名/ip + 端口

这三者完全相同视为资源域相同,如果不同则就是跨域了

 

第一种方法:使用注解@CrossOrigin

使用在方法上面,则只对这一个方法生效

@RequestMapping("/cors_test")
@GetMapping
@CrossOrigin("http://localhost:8024")
public String corsTest(){
    return "hello cors";
}

可以使用在controller上面,则对这个controller里面的所有方法生效

/**
* @Description:
* @Author: sgl
* @Date: 2020/12/8 0008 下午 19:18
*/

/**
* maxAge:探测请求最大时间范围,180秒内请求成功一次,不用再次探测
* get请求不用探测
**/
@RestController
@RequestMapping("cors")
@CrossOrigin(value = "http://localhost:8024",maxAge = 180)
public class HelloCors {


    @RequestMapping("/cors_test")
    @GetMapping
    public String corsTest(){
        return "hello cors";
    }


}

 

 

第二种方法:重写springmvc 的配置类 WebMvcConfigurer 的 addCorsMappings 方法

 

第一种方法不适合项目全局配置,第二种是可以满足全局配置的

/**
* @Description:
* 写一个配置类实现spring mvc的WebMvcConfigurer 重写 addCorsMappings方法
* 然后将配置类用注解 @Configuration 注入spring 容器
* @Author: sgl
* @Date: 2021/1/12 0012 下午 14:01
*/

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry){
        registry.addMapping("/**")
                .allowedMethods("*")
                .allowedHeaders("*")
                .allowedOrigins("http://localhost:8024")
                .maxAge(180);
    }

}

 

第三种方法:注入CorsFilter的方式

 

/**
* @Description:
* 将cors过滤器 CorsFilter 对象注入到spring容器中
* @Author: sgl
* @Date: 2021/1/12 0012 下午 14:21
*/
@Configuration
public class CorsConfig {


    @Bean
    CorsFilter corsFilter(){
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", buildConfig());
        return new CorsFilter(source);
    }


    private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("http://localhost:8024");
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.setAllowCredentials(true);
        return corsConfiguration;
    }
}

 

以上就是spring项目三种常见的解决跨域访问问题的解决方式。

demo源码地址:https://github.com/Hak-L/cors.git

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值