【转】 SpringCloudAlibaba--07——gateWay

【转】 SpringCloudAlibaba--07——gateWay

参考地址:蚂蚁课堂

* GateWay词汇表简介

首先看下项目中配置时候的用法:

 

 

 官网上的介绍GateWay词汇表:(这是翻译成中文的)

 

 

这三个就是GateWay的核心

谓词:意思就是个转发的规则,比如介绍几种常用的谓词用法:

* 谓词用法

后路线谓词工厂:(在这个时间之后的都可以调转)

 

 

 前路线谓词工厂:

 

 

 主机路由谓词工厂:

 

 

 重量路线谓词工厂:

 

 

* GateWay 工作原理

找到这个源码:

 

 点进去第一行的配置源码,就可以看到源码里人家说的,如果有Servlet配置,就会直接报错

 

 * GateWay解决跨域问题

 微服务中的跨域问题,不属于前端解决!核心在我们后端

虽然@CrossOrigin 注解可以解决跨域问题,但如果有很多个控制层的类,就很不方便了。

解决办法有很多种,比较靠谱的话,用Nginx吧

Nginx解决跨域性问题要保持域名和端口号一致,还可以通过配置文件解决跨域问题,

不过更好的办法使用Filter,要在网关上配置Filter,而不是在每个服务里配置,这样就可以解决了

@Component
public class CrossOriginFilter implements GlobalFilter {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        ServerHttpRequest request = exchange.getRequest();
        ServerHttpResponse response = exchange.getResponse();
        HttpHeaders headers = response.getHeaders();
        headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, "*");
        headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, "POST, GET, PUT, OPTIONS, DELETE, PATCH");
        headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true");
        headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, "*");
        headers.add(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "*");
        return chain.filter(exchange);

    }

 

posted @ 2020-10-15 01:46  CLASSIC~W  阅读(139)  评论(0编辑  收藏  举报