前后端开发彻底解决跨域问题

文章介绍了在开发分布式项目时遇到的跨域问题解决方案,包括编写全局配置类启用CorsFilter,允许所有来源、头部和方法,以及关闭Nacos服务的注册与发现,以便于前后端本地联调而不会调用到他人电脑上的服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:这里所介绍的解决跨域问题只是为了方便前后端联调接口,并不是真正意义上的解决业务上的跨域问题。

我所开发的项目是分布式项目,模块与前端调用时有时候会发生前端调用后端接口,报跨域禁止访问的问题,但在开发阶段,前后端的本地联调还是更为方便的,不用实时的部署代码,还能在IDEA监控报错信息,很方便。

只需两步就可以实现:

第一步:写一个全局配置类

@Configuration
public class CorsConfig {

    @Bean
    public CorsFilter corsFilter(){
        UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        /*允许服务端访问的客户端请求头*/
        corsConfiguration.addAllowedHeader("*");
        /*允许访问的客户端域名*/
        corsConfiguration.addAllowedOrigin("*");
        /*允许访问的方法名,GET POST等*/
        corsConfiguration.addAllowedMethod("*");
        /*是否允许请求带有验证信息*/
        corsConfiguration.setAllowCredentials(false);
        urlBasedCorsConfigurationSource.registerCorsConfiguration("/**",corsConfiguration);
        CorsFilter corsFilter = new CorsFilter(urlBasedCorsConfigurationSource);
        return corsFilter;
    }

}

直接粘进去导包就可以用。

第二步:关闭nacos的注册服务发现功能。

这里需要说明一下,如果只是想解决跨域问题,只需要上面的配置即可,但是前面说了,我这里是分布式的项目,一个模块有多人开发,每个人都启动注册一个项目在nacos上,前端访问的时候,nacos又是轮询的负载均衡模式,所以很容易调用到同事电脑上的服务,这样很影响开发,所以解决完跨域后,我在配置文件中设置关闭服务的注册与发现。

 discovery:
        # 服务注册地址
        server-addr: 192.168.**.**:8849
        namespace: 04028c67-****-4653-****-fdd80132****
        group: mys-test
        #关闭nacos服务注册与发现
        register-enabled: false

总体来说,这个解决跨域的方式我个人觉得是比较好用的,当然还有在类上加上

@CrossOrigin这个注解,前端在配置一下禁止跨域与路径转发也可以。但是有时候这个方法不好使,所以如果常规方法不起作用,直接把第一步的配置类粘进去就可以解决了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值