电商项目-微服务网关利用的题目

打印 上一主题 下一主题

主题 872|帖子 872|积分 2616

  一、微服务网关跨域题目

          项目采用前后端分离架构,前段存在自己的前段系统,并且会单独部署,同样后端系统也都是单独部署,这样就一定存在跨域题目。可以在controller类上添加注解来进行解决,但是现在的访问都是基于网关进行操作,所以还必要在网关系统上对跨域题目进行解决。详细解决方案:在网关系统添加配置信息:
  修改application.yml ,在spring.cloud.gateway节点添加配置:
  1.       globalcors:
  2.         cors-configurations:
  3.           '[/**]': # 匹配所有请求
  4.             allowedOrigins: "*" #跨域处理 允许所有的域
  5.             allowedMethods: # 支持的方法
  6.             - GET
  7.             - POST
  8.             - PUT
  9.             - DELETE
复制代码
 

网关模块spring.cloud.gateway的配置文件application.yml如下:
  1. spring:  application:    name: sysgateway  cloud:    gateway:      globalcors:
  2.         cors-configurations:
  3.           '[/**]': # 匹配所有请求
  4.             allowedOrigins: "*" #跨域处理 允许所有的域
  5.             allowedMethods: # 支持的方法
  6.             - GET
  7.             - POST
  8.             - PUT
  9.             - DELETE      routes:      - id: goods        uri: lb://goods        predicates:        - Path=/goods/**        filters:        - StripPrefix= 1server:  port: 9101eureka:  client:    service-url:      defaultZone: http://127.0.0.1:6868/eureka  instance:    prefer-ip-address: true
复制代码
 
 
  二、微服务网关自定义过滤器
 
          当有了网关系统,客户端所有访问先进入到网关中,由网关将请求转发到详细某个服务。基于这个特点,可以在网关上通过过滤器的情势进行特定业务的操作:比如ip(好坏名单)拦截、特定地址的拦截等。
  定义两个过滤器 :获取客户端访问IP 和客户端访问URL地址:
  (1)shangcheng_gateway_system创建IpFilter(获取客户端访问IP)
  1. @Component
  2. public class IpFilter implements GlobalFilter, Ordered {
  3.     //具体业务逻辑
  4.     @Override
  5.     public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
  6.         System.out.println("经过第1个过滤器IpFilter");
  7.         ServerHttpRequest request = exchange.getRequest();
  8.         InetSocketAddress remoteAddress = request.getRemoteAddress();
  9.         System.out.println("ip:"+remoteAddress.getHostName());
  10.         return chain.filter(exchange);//放行过滤器
  11.     }
  12. ​   
  13.     //过滤器的执行优先级
  14.     @Override
  15.     public int getOrder() {
  16.         return 1;
  17.     }
  18. }
复制代码
 
 
(2)shangcheng_gateway_system创建UrlFilter(获取客户端访问url地址)
 
  1. @Component
  2. public class UrlFilter implements GlobalFilter, Ordered {
  3.     //具体业务逻辑​
  4.     @Override
  5.     public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
  6.         System.out.println("经过第2个过滤器UrlFilter");
  7.         ServerHttpRequest request = exchange.getRequest();
  8.         String url = request.getURI().getPath();
  9.         System.out.println("url:"+url);
  10.         return chain.filter(exchange);//放行过滤器
  11.     }
  12. ​    //过滤器的执行优先级
  13.     @Override
  14.     public int getOrder() {
  15.         return 2;
  16.     }
  17. }
复制代码
 
 
三、网关访问路由转发测试

网关访问路由转发测试:
          直接访问Goods微服务:localhost:9001/brand/category/手机
          成功返回效果。
          访问网关:localhost:9101/goods/brand/category/手机
          成功返回效果。



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

美丽的神话

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表