gateway跨域问题解决方案是什么,怎样做
导读:这篇文章给大家介绍了“gateway跨域问题解决方案是什么,怎样做”的相关知识,讲解详细,步骤过程清晰,对大家进一步学习和理解“gateway跨域问题解决方案是什么,怎样做”有一定的帮助,希望大家阅读完这篇文章能有所收获。下面就请大家跟着小...
这篇文章给大家介绍了“gateway跨域问题解决方案是什么,怎样做”的相关知识,讲解详细,步骤过程清晰,对大家进一步学习和理解“gateway跨域问题解决方案是什么,怎样做”有一定的帮助,希望大家阅读完这篇文章能有所收获。下面就请大家跟着小编的思路一起来学习一下吧。
一、gateway网关简介
api 网关是介于客户端和服务器端之间的中间层,所有的外部请求都会先经过api 网关这一层。
也就是说,api 的实现方面更多的考虑业务逻辑,而安全、性能、监控可以交由 api 网关来做,这样既提高业务灵活性又不缺安全性。
spring cloud gateway
是spring官方基于spring 5.0、spring boot2.0和project reactor等技术开发的网关,spring cloud gateway旨在为微服务架构提供简单、有效和统一的api路由管理方式,spring cloud gateway作为spring cloud生态系统中的网关,目标是替代netflix zuul,其不仅提供统一的路由方式,并且还基于filer链的方式提供了网关基本的功能,例如:安全、监控/埋点、限流等。
二、gateway使用步骤
步骤1:搭建模块并引入依赖
在项目中使用maven模块,搭建server-gateway模块。
由于gateway也需要在nacos中进行注册,所以在引入gateway依赖的同时,也要引入naocs依赖。
!--gateway--> dependency> groupid> org.springframework.cloud/groupid> artifactid> spring-cloud-starter-gateway/artifactid> /dependency> !-- 服务注册 --> dependency> groupid> com.alibaba.cloud/groupid> artifactid> spring-cloud-starter-alibaba-nacos-discovery/artifactid> /dependency>
步骤2:添加配置文件
下面的配置表示将网关服务端口设置为9000后,配置了两个路由id:
# 服务端口 server.port=9000 # 服务名 spring.application.name=service-gateway # nacos服务地址 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 #使用服务发现路由 spring.cloud.gateway.discovery.locator.enabled=true #设置路由id spring.cloud.gateway.routes[0].id=service-hosp #设置路由的uri spring.cloud.gateway.routes[0].uri=lb://service-hosp #设置路由断言,代理servicerid为auth-service的/auth/路径 spring.cloud.gateway.routes[0].predicates= path=/*/hosp/** #设置路由id spring.cloud.gateway.routes[1].id=service-cmn #设置路由的uri spring.cloud.gateway.routes[1].uri=lb://service-cmn #设置路由断言,代理servicerid为auth-service的/auth/路径 spring.cloud.gateway.routes[1].predicates= path=/*/cmn/**
步骤3:创建启动类
@springbootapplication public class servergatewayapplication { public static void main(string[] args) { springapplication.run(servergatewayapplication.class, args); } }
网关初步测试
后端服务配置好后启动相应微服务,在前端dev.env.js
文件中,也将端口设置为9000与后端对应:
'use strict' const merge = require('webpack-merge') const prodenv = require('./prod.env') module.exports = merge(prodenv, { node_env: '"development"', base_api: '"http://localhost:9000"', } )
关闭之前配置的nginx,在不同端口之前发送请求,都可以成功访问:
三、gateway解决跨域问题
在service_gateway模块创建配置类,写入下面的内容:
@configuration public class corsconfig { @bean public corswebfilter corsfilter() { corsconfiguration config = new corsconfiguration(); config.addallowedmethod("*"); config.addallowedorigin("*"); config.addallowedheader("*"); urlbasedcorsconfigurationsource source = new urlbasedcorsconfigurationsource(new pathpatternparser()); source.registercorsconfiguration("/**", config); return new corswebfilter(source); } }
配置好后,将之前项目中所有controller中的@crossorigin
注解删除掉。
再次启动后端微服务和前端项目,切换不同选项卡,发现跨域问题被成功解决掉:
以上就是关于“gateway跨域问题解决方案是什么,怎样做”的介绍了,感谢各位的阅读,希望文本对大家有所帮助。如果想要了解更多知识,欢迎关注网络,小编每天都会为大家更新不同的知识。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: gateway跨域问题解决方案是什么,怎样做
本文地址: https://pptw.com/jishu/654430.html