谷粒商城gateway配置Cors跨域出错解决办法

一、报错原因

二、解决办法

在gateway包下新建一个config包,如图

在config包下新建一个类,名为GulimallCorsConfiguration

package com.atguigu.gulimall.gateway.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;

import java.util.Arrays;

@Configuration
public class GulimallCorsConfiguration{

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

        CorsConfiguration corsConfiguration= new CorsConfiguration();

        corsConfiguration.addAllowedHeader("*");

        corsConfiguration.addAllowedMethod("*");

        //下面这是新版的Springboot3的使用方式,旧版用 
        //corsConfiguration.addAllowedOrigin("*");
        corsConfiguration.addAllowedOriginPattern("*");

        corsConfiguration.setAllowCredentials(true);

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

    }
}

再将renren-fast项目里的CorsConfig类给注释掉

注释掉之后,最重要的一步来了

由于你可能是新版的springboot3,当初在创建gulimall-gateway模块的时候,系统会使用下面这个依赖给你创建的gateway网关,默认使用的是mvc。

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

这个是错误的,应该使用下面这个依赖。如果你是下面这个,就可以跳过这个环节

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

然后再将gateway模块里面的yml文件改成这样

spring:
  cloud:
    gateway:
        routes:
          - id: test-route
            uri: https://www.baidu.com
            predicates:
              - Query=url,baidu
          - id: qq-route
            uri: https://www.qq.com
            predicates:
              - Query=url,qq
          - id: admin_route
            uri: lb://renren-fast
            predicates:
              - Path=/api/**
            filters:
              - RewritePath=/api/?(?<segment>.*), /renren-fast/$\{segment}

最后重启renren-fast和gateway项目即可,注意nacos,虚拟机啥的都要启动,前端也要启动,而且前端的相关配置也是要跟这谷粒商城老师一样哦!

这样应该就解决问题了!

最后在提一点:renren-fast注册不到nacos上,不要依赖整个common,只依赖discover就可以了,但是版本要和renren-fast的springboot版本兼容,可以去下面这个网站上查找:

版本说明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值