当前位置: 代码网 > it编程>编程语言>Java > 配置gateway跨域和网关断言规则

配置gateway跨域和网关断言规则

2024年08月06日 Java 我要评论
【代码】nacos配置gateway网关遇见的问题。
  1. 需要在pom文件中配置nacos的服务配置config和服务发现discovery的依赖
  2. 需要同步springboot和springcloud的版本
  3. 启动类上加上@enablediscoveryclient注解,开启服务注册与发现
  4. gateway不需要添加mybatis依赖,如果添加了需要在启动类@springbootapplication注解上添加
@enablediscoveryclient
@springbootapplication(exclude = {datasourceautoconfiguration.class})
  1. 在application.properties文件中配置
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848  
spring.application.name=gulimall-gateway
  1. 在bootstrap.properties文件中配置
spring.cloud.nacos.config.server-addr=127.0.0.1:8848  
server.port=88
  1. 跨域
    前端给后端发送ajax请求时,前后端服务地址不同会引起跨域,网关服务统一配置跨域后就不用在其他服务都配置跨域
@configuration
public class gulimallcorsconfiguration {

    @bean
    public corswebfilter corswebfilter(){
        urlbasedcorsconfigurationsource source = new urlbasedcorsconfigurationsource();
        //配置跨域
        corsconfiguration corsconfiguration = new corsconfiguration();
        corsconfiguration.addallowedheader("*");
        corsconfiguration.addallowedmethod("*");
        corsconfiguration.setallowcredentials(true);
        corsconfiguration.addallowedorigin("*");

        //允许所有请求跨域
        source.registercorsconfiguration("/**",corsconfiguration);
        return new corswebfilter(source);
    }
}
  1. 添加网关路由配置
spring:
	cloud:
		gateway:
			router:
	          - id: baidu_routes
	          uri: https://www.baidu.com
	          predicates:
	            - query=url,baidu
	
	        - id: qq_routes
	          uri: https://www.qq.com
	          predicates:
	            - query=url,qq
	
	        - id: product_route
	          uri: lb://gulimall-product
	          predicates:
	            - path=/product/**
	          filters:
	            - rewritepath=/(?<segment>.*),/$\{segment}
	
	        - id: third_party_route
	          uri: lb://gulimall-third-party
	          predicates:
	            - path=/thirdparty/**
	          filters:
	            - rewritepath=/thirdparty/(?<segment>.*),/$\{segment}
	
	        - id: admin_route
	          uri: lb://renren-fast
	          predicates:
	            - path=/**
	          filters:
	            - rewritepath=/(?<segment>.*),/renren-fast/$\{segment}


path=/product/**--------------------------- 路径为/product开头的任意路径
rewritepath=/(?.*),/${segment}---------------- 就按照 / -> /的规则

## 路由由上至下 优先级高的放前面(/product/**就应该放在/**的上面)
## lb://renren-fast 负载均衡到哪个服务 lb://服务名
## predicates断言规则, path按照指定的路径断言  前端项目断言规则 path=/api/**
## rewritepath路径重写规则: 把 http://localhost:88/captcha.jpg 转换为 http://localhost:8080/renren-fast/captcha.jpg
## /(?<segment>.*) 左边这部分是网页访问的url,/$\{segment} 右边这部分是真正的后台接口的url ,规则就是 左边->右边
## localhost:30000/thirdparty/oss/policy -> localhost:30000/oss/policy
(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com