开发者学堂课程【精通Spring Cloud Alibaba:GateWay如何解决网关跨域的问题】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/634/detail/10130
GateWay 如何解决网关跨域的问题
微服务中跨域的问题不属于前端解决
因为就算用 jsonp,它只能支持 get 请求
微服务中跨域核心点就是在我们后端
解决跨域问题
1.HttpCl i ent 转发
2.使用过滤器允许接口可以跨域 响应头设置
3.Jsonp 不支持我们的 post 属于前端解决
4.Ng inx 解决跨域的问题保持我们域名和端口一致性
5.Ng inx 也是通过配置文件解决跨域的问题
6.基于微服务网关解决跨域问题,需要保持域名和端口一致性
7.使用网关代码允许所有的服务可以跨域的问题
8.使用 Spr ingBoot 注解形式 @CrossOr ig in
第5点和第7点是很相似的,都靠着一个原理:
@Component
public class CnossoriginEil.ten implements global5ilten. {
@override
public Mono<Void> filter(ServerwebExchange, exchange,GatewaxEilterChain chain) {
ServenHttpReauestrequest = exshange.getReguest( );
ServenHttoResponse response = exshange.getResnonse();
HttpHeadens headers = .9sp9ns8.getHleadens();
headens.add(HttpHeadecs.ACCES...CQN万RQL..ALl.Qw..9R.GTM,“*");
headens..ad(ittoHieaden.s..ACCESS.CONITRO...A..OM.METHOD5,,"POST,GET,PUT,OPTIONS,DELETE,PATCH");
headens.add(ttpHeadecs.ACCESS..CONTRQL..ALLQw..CREDENLIALS,"true" ) ;
headens.add(HttpHeade.s.ACCESS...CONTRQ..ALLQw..HEADERS,"*");
headecs.add(HttpHeadecs.ACCESS..CONTROL.5XPQS5.….HEADERS,“*"); return chain.filtec(exchange);
}
为 ServerHttpRequest request = exchange.getRequest();设置优先级