首页前端开发其他前端知识gateway跨域问题解决方案是什么,怎样做

gateway跨域问题解决方案是什么,怎样做

时间2024-03-27 19:30:03发布访客分类其他前端知识浏览456
导读:这篇文章给大家介绍了“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
在java中的八大基本数据类型分别是哪些呢? java里面复制多向链表的方法步骤是什么

游客 回复需填写必要信息