springboot 本地测试联调跨域问题解决

本文介绍了在SpringBoot项目中处理前后端分离的跨域问题的三种方法:通过FilterRegistrationBean、实现WebMvcConfigurer接口的addCorsMappings方法以及使用@CrossOrigin注解。每种方式都涉及到配置CorsConfiguration,包括设置允许的源、方法和头信息。通过这些配置,可以确保CORS请求得到正确处理。
摘要由CSDN通过智能技术生成

本地联调前后端分离项目,由于端口不一样会导致跨域问题,这里介绍三种通过后端放通的方式去调整。
以下都是以springboot 工程为例

一、通过注册FilterRegistrationBean 实现

@Configuration
public class CorsConfig {

    @Bean
    public FilterRegistrationBean corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(false);
        config.addAllowedOrigin("*");
        config.addAllowedHeader("*");
        config.addAllowedMethod("*");
        source.registerCorsConfiguration("/**",config);
        FilterRegistrationBean<CorsFilter> bean = new FilterRegistrationBean(new CorsFilter(source));
        bean.setOrder(0);
        return bean;

    }
}

二、实现WebMvcConfigurer的addCorsMappings方法

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("POST","GET","PUT","OPTIONS","DELETE")
                .maxAge(3600)
                .allowCredentials(true);
    }
}

三、@CrossOrigin

在对应的controller 层面 加上@CrossOrigin注解

@CrossOrigin
@RequestMapping("/set")
public class SetController {
    private final SetService setService;
    public SetController(SetService setService){
        this.setService = setService;
    }
 }

无论是通过哪种方式配置 CORS,其实都是在构造 CorsConfiguration。 一个 CORS 配置用一个 CorsConfiguration类来表示
在这里插入图片描述
spring 中 对 CORS 规则校验都是,委托给DefaultCorsProcessor实现的.
DefaultCorsProcessor处理过程如下:
1、判断依据是Header中是否包含Origin。如果包含则说明为CORS请求,转到2;否则,不是CORS请求,不作任何处理。
2、判断responseHeader是否已经包含Access-Control-Allow-Origin,如果包含,证明已经被处理过了,继续下一步,否则不再处理。
3、判断是否同源,如果是则转交给负责该请求的类处理。
4、是否配置了CORS规则,如果没有配置,且是预检请求,则拒绝该请求,如果没有配置,且不是预检请求,则交给负责该请求的类处理。如果配置了,则对该请求进行校验。

校验就是根据CorsConfiguration 这个类的配置进行判断:
1、判断origin是否合法
2、判断method是否合法
3、判断header 是否合法
4、如果全部合法,则在response header中添加响应的字段,并交给负责该请求的类处理,如果不合法,则拒绝该请求。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值