谷粒商城项目踩坑:renren-fast登录页面验证码显示不出来。

错误描述:renren-fast前端页面验证码刷新不出来,通过F12查看网页控制台,显示503 not service,找不到服务。

错误根因分析:我用的spring-cloud-dependencies的版本为20.0.3,spring-cloud-alibaba-dependencies的版本时2.1.0.RELEASE, 两者不兼容导致网关路由失效,即如下配置不生效。

 解决方案:

更换版本:spring-cloud-dependencies的版本为3.0.3,spring-cloud-alibaba-dependencies的版本时2.2.1.RELEASE, 在工程的pom中加入如下几个依赖。

(1)首先是gulimall-common中添加注册中心和配置中心的依赖

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
<!--        配置中心-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

(2)gulimall-common中添加springcloud-alibaba的依赖,采用2.2.1的版本,版本错了验证码会刷不出来。

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.1.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

(3)gulimall-gateway中添加spring-loadbalance依赖,因为Spring Cloud 2020.0.0版本之前会自动引入Netflix Ribbon依赖,Netflix Ribbon功能跟loadbalancer一样,因Netflix公司停止维护Ribbon后, 在Spring Cloud 2020.0.0版本之后Spring使用loadbalancer替代了Ribbon, 但是loadbalancer依赖需要手动引入. 

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>

(4)如果还刷不出来,检查一下你配置中心是否能读出配置,不行的话,gulimall-common加如下依赖,因为spring-cloud-20.0.3默认是关闭“优先读取bootstrap.properties”这个功能的。

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.0.3</version>
        </dependency>

(5)配置了以上几步之后,跨域的配置也写了,但是还是出现问题,需要更改跨域配置代码,修改如下。addAllowedMethod注释掉,添加addAllowedOriginPattern。

@Configuration
public class GulimallCorsConfiguration {
    @Bean
    public CorsWebFilter corsWebFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();

        CorsConfiguration corsConfiguration = new CorsConfiguration();

        //1、配置跨域
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");
//        corsConfiguration.addAllowedOrigin("*");
        corsConfiguration.addAllowedOriginPattern("*");
        corsConfiguration.setAllowCredentials(true);

        source.registerCorsConfiguration("/**",corsConfiguration);
        return new CorsWebFilter(source);
    }
}

踩坑心得:实在找不出bug的时候,考虑一下各种工具插件的版本问题,真的是一代版本一代神啊。

  • 21
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 27
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值