SpringBoot配置跨域的机种方式 spring跨域的几种方式

SpringBoot配置跨域的机种方式 spring跨域的几种方式

1、注解方式

使用 @CrossOrigin注解标注在 Controller或者 Mapping

@RestController
@CrossOrigin
@RequestMapping("/ctro")
public class Controller{

	@CrossOrigin
	@GetMapping(value = "/test")
	public String test(){
		return "Nihao"}
}

2、实现 WebMvcConfigurer 接口

这种方式问题比较多,如果没有生效,需要考虑 是不是有其他组件模块影响了跨域,例如(Shiro、Sa-Token等过滤器会影响)

@Configuration
@EnableWebMvc
public class CorsConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
            .allowedOrigins("*") // 允许所有域名访问,可以根据需求进行配置
            .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") // 允许的请求方法
            .allowedHeaders("*") // 允许的请求头
            .allowCredentials(true) // 是否允许发送Cookie
            .maxAge(3600); // 预检请求的有效期,单位秒
    }
}

3、使用 FilterRegistrationBean 过滤器 (推荐)

@Configuration
public class CorsConfig {
	
	@Bean
	public FilterRegistrationBean corsFilter() {
		UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
		CorsConfiguration config = new CorsConfiguration();
		config.setAllowCredentials(true);
		
		// 允许所有域名访问,可以根据需求进行配置, 使用setAllowedOrigin会出现IllegalArgumentException
		config.addAllowedOriginPattern("*");
		config.addAllowedHeader("*");
		config.addAllowedMethod("*");
		source.registerCorsConfiguration("/**", config);
		
		// 使用FilterRegistrationBean包装CorsFilter
		
		FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
		
		// 设置Filter的优先级,值越小优先级越高
		bean.setOrder(0);
		return bean;
	}

}


  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值