谷粒商城第六天-实现功能的前序工作(网关的配置 跨域配置)
目录
一、为什么要做这项工作
1.1 为什么要配置网关
1.2 为什么要使用网关统一配置跨域
二、网关配置
三、统一跨域配置
四、总结
一、为什么要做这项工作
1.1 为什么要配置网关
我们知道网关的作用其实主要就是进行路由的,也就是根据前端发送到网关的请求,再由网关统一分配到对应的微服务中去的。那这里为什么需要通过网关来统一路由呢?直接由前端直接向微服务发送请求呢?这样效率不是更高吗?为什么还要走一一下网关呢?
其实原因很简单,就是如果按照直接由前端向微服务直接发请求的话,如果只有这一个微服务,那还好说,直接就写这个微服务对应的ip地址和端口号就行了,这样写死,保持这一个也不会有问题,可问题是现在是多个微服务,每个微服务对应的ip可能不一样,端口不一样,而前端又只能写上一个ip和端口,那肯定就满足不了需求了,我肯定是得向不同的微服务发送请求的,那如何解决呢?网关就能解决这个问题;既然前端只能向后端的一个微服务发送请求,那我能不能在后端搞这样的一个微服务,这个微服务的作用能够根据前端的不同请求按照一个规则定向自动的转发到后端的真正的业务微服务上面去呢?其实这个微服务就是网关微服务,网关就能干这件事,注意其实网关本身也是一个微服务,只不过它不是处理业务的微服务,而是为这些微服务做服务的。这也就是为什么要配置网关服务的必要,一句话就是:使得前端只需写一个固定的ip和端口也可以将请求发送到后端对应的微服务上去。
1.2 为什么要使用网关统一配置跨域
网关其实就是充当着中间者的这样的一个身份,就像挡在微服务前面的一道墙,除了可以路由,当然还可以对请求进行一些处理,之后再发送到对应的微服务,也就是可以干一些中间处理,那可以干哪些中间处理呢?就比如说统一进行跨域处理,其实也就是可以将那些微服务中所要必须做的,并且重复性的,就可以交由中间者网关来试一试,这样就够使得配置统一,同时又能使得代码复用。
其实这个也许并不是必须的,但我在做谷粒商城这个项目的时候,如果使用的原来的微服务中的跨域,也就是使用若依框架的后台管理的微服务自带的跨域时,发现并不行,我发现在页面进行登录时怎么也登录不上,一直报403错误,当初我还觉得是权限问题,一直以为是不是登录接口用权限框架设置了权限认证,后来看了看接口配置,发现也并没有做权限认证,然后就一直很郁闷,我还使用postman测试没问题,就说明后端是没有问题的,没有权限之类的问题的,并且获取验证码的那个接口也是没有问题的,我就猜想是不是前端的问题呢?前端对这个请求进行拦截了?奈何前端实在是不会,也就是一直放在这里了,后来就很无奈了,后端没问题,前端又不会,就只能这样一直放着了,后面无奈只能求助群里的大佬,最后将问题排除出来了。
其实也就是跨域的问题,不能使用自带的跨域,不能将处理跨域的那个对象注入到容器中去,将其进行注释,然后再网关中配置上即可,至于为什么之前的获取验证码的接口,不会出现问题,可能是因为这个是get请求,是简单请求,若依框架对其进行了处理,而登录这个post请求,若依并没有进行处理,自然使用原有的这一套就不行了,当然这个理由很牵强了,本人水平有限,待之后搞明白了,再来进行解答。总之一句话,就是使用网关统一配置跨域能简化代码,提高代码复用性,其实不是必须的,但是这里测试不这样做,登录接口就访问不了,至于到底为什么之后再来解答。
二、网关配置
将原理说清楚了,配置其实就很简单了,到目前阶段,就是只使用到网关的路由功能,要使用网关的路由功能,自然得参考网关的官方文档了,关键的如下:

根据地址路由到特点的微服务,需要查看路由断言,中的:
在前端访问的时候,其实路径资源路径前面带了:/api-dev的,实际访问的其实最终是去掉/api-dev的:

这个/dev-api是在前端配置的,代表当前前端是开发环境,访问的时候会自动去掉再去进行访问。
所以现在前端发的请求到底啥样子现在清楚了,现在要解决的问题是如何正确的对应的后端微服务,根据前端发的就能正确路由到后端,其实路由到后端关键就是将url中的ip和端口自动动态的微服务真实的ip和端口就行了,当然完成这一步的前提是将业务微服务和网关微服务都注册到注册中心去,这是前提,完成注册就三步,这里就不赘述了,详情参考我的微服务组件那一篇博文中的nacos注册中心。关键在于网关里面的配置,既然要动态的到后端的微服务,那么肯定得让网关感受到后端的关键信息能唯一标识后端的微服务才能正确的路由到指定的微服务,那这个“关键信息”是什么呢?其实在后端一个微服务,由逆向代码自动生成的代码,其接口的路径规范就是一个微服务下的所有控制器接口的路径都是以模块名开头的,模块名我们又是在哪里指定的呢?
在使用若依的代码生成器配置那里指定的。
这里是什么,控制器接口就以什么开头。既然控制器都以这个开头了,那么这个就可以作为网关识别的“关键信息”,因此在网关配置中,配置以模块名开头就转发到对应的微服务,而微服务通过服务名指定,这个是由nacos注册中心去找到对应的服务的,然后使用下lb负载均衡就行了。
如下图的配置:

三、统一跨域配置
这个统一跨域配置就很简单了,直接在网关里面配好即可。

spring:cloud:nacos:server-addr: localhost:8848gateway:globalcors:cors-configurations:'[/**]': # 匹配所有请求allowedOrigins: "*" #跨域处理 允许所有的域allowedMethods: # 支持的方法- GET- POST- PUT- DELETEroutes:- id: product_path_routeuri: lb://gulimall-productpredicates:- Path=/product/**- id: thirdparty_path_routeuri: lb://thirdpartypredicates:- Path=/thirdparty/**- id: admin_path_routeuri: lb://gulimall-adminpredicates:- Path=/**application:name: gulimall-geteway
server:port: 88
当然还要将后台管理服务中自带的跨域给注释掉:

security里面也注释掉:
这又是一种方式了,之前在我的博客里面还介绍过单体项目配置跨域的两种方式,所以到目前为止就有三种方式了。
四、总结
其实就干了两件事:配置好网关的路由使得前端一个固定的ip和端口就能到底指定的微服务,以及使用网关进行统一配置
相关文章:
谷粒商城第六天-实现功能的前序工作(网关的配置 跨域配置)
目录 一、为什么要做这项工作 1.1 为什么要配置网关 1.2 为什么要使用网关统一配置跨域 二、网关配置 三、统一跨域配置 四、总结 一、为什么要做这项工作 1.1 为什么要配置网关 我们知道网关的作用其实主要就是进行路由的,也就是根据前端发送到网关的请求&…...
为什么说国内数字孪生平台gis架构采用Cesium是不错的选择?
Gis作为数字孪生平台开发中重要的一环对数字孪生平台是否好用是一个重要的判定方式,国内数字孪生软件在融合GIS系统方面采取了多种方式,例如Unity或Unreal Engine等游戏引擎,以增强数字孪生的空间感知和空间分析能力,提供更全面、…...
前端面试的性能优化部分(1)每篇10题
1. 懒加载的概念 懒加载(Lazy Loading)是一种优化技术,它用于延迟加载页面资源,只在需要时才加载特定的内容,而不是在页面初始加载时一次性加载所有资源。懒加载的目的是提高页面加载速度和性能,尤其对于单…...
GitLab备份升级
数据备份(默认的备份目录在/var/opt/gitlab/backups/下,生成一个以时间节点命名的tar包。) gitlab-rake gitlab:backup:create新建repo源,升级新版本的gitlab vim /etc/yum.repos.d/gitlab-ce.repo [gitlab-ce] namegitlab-ce baseurlhttps://mirrors.…...
Matlab实现遗传算法仿真(附上40个仿真源码)
遗传算法(Genetic Algorithm,GA)是一种基于生物进化理论的优化算法,通过模拟自然界中的遗传过程,来寻找最优解。 在遗传算法中,每个解被称为个体,每个个体由一组基因表示,每个基因是…...
git使用(由浅到深)
目录流程图 1. 分布式版本控制与集中式版本控制 1.1 集中式版本控制 集中式版本控制系统有:CVS和SVN它们的主要特点是单一的集中管理的服务器,保存所有文件的修订版本;协同开发人员通过客户端连接到这台服务器,取出最新的文件或者提交更新…...
NAT协议(网络地址转换协议)详解
NAT协议(网络地址转换协议)详解 为什么需要NATNAT的实现方式静态NAT动态NATNAPT NAT技术的优缺点优点缺点 NAT协议是将IP数据报头中的IP地址转换为另外一个IP地址的过程,主要用于实现私有网络访问公有网络的功能。这种通过使用少量的IP地址代…...
pytorch(续周报(1))
文章目录 2.1 张量2.1.1 简介2.1.2 创建tensor2.1.3 张量的操作2.1.4 广播机制 2.2 自动求导Autograd简介2.2.1 梯度 2.3 并行计算简介2.3.1 为什么要做并行计算2.3.2 为什么需要CUDA2.3.3 常见的并行的方法:网络结构分布到不同的设备中(Network partitioning)同一层…...
el-table 树形结构数据 设置某一层,新增按钮不展示
<template><div><el-table:data"tableData":row-class-name"rowClassName":tree-props"{ children: children, hasChildren: hasChildren }"><!-- 表格列定义 --><!-- ... --><el-table-column label"操作…...
【Unity2D】粒子特效
为什么要使用粒子特效 Unity 的粒子系统是一种非常强大的工具,可以用来创建各种各样的游戏特效,如火焰、烟雾、水流、爆炸等等。使用粒子特效可以使一些游戏动画更加真实或者使游戏效果更加丰富。 粒子特效的使用 在Hierarchy界面右键添加Effects->…...
第九十六回 网络综合示例:获取天气信息
文章目录 概念介绍使用方法示例代码 我们在上一章回中介绍了dio库中转换器相关的内容,本章回中将介绍网络综合示例:获取天气信息.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在前面章回中介绍了网络操作相关的内容,本章…...
Shell中获取昨天和多天前日期
1、获取今天日期 $ date -d now %Y-%m-%d 或者 $ date %F2、获取明天日期 $ date -d next-day %Y-%m-%d $ date -d tomorrow %Y-%m-%d3、获取昨天日期 $ date -d yesterday %Y-%m-%d 或者 $ date -d last-day %Y-%m-%d 或者 $ date -d "1 days ago" %Y-%m-%d …...
golang静态编译及编译失败排查步骤
文章目录 一、背景前提 二、静态编译概述1、执行静态编译设置CGO_ENABLED方式指定link方式 2、编译报错分析(1)确认系统上有没有安装libopus(2)设置LD_LIBRARY_PATH 三、详细排查过程1、下载bpf排查工具bcc, bcc-tools,python-bcc…...
2023年7月第4周大模型荟萃
2023年7月第4周大模型荟萃 2023.7.31版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 1、Cerebras推出全球最强AI超算 AI芯片初创公司Cerebras Systems和总部位于阿联酋的技术控股集团G42于7月20日宣布,携手打造一个由互联的超…...
Meta分析的选题与文献计量分析CiteSpace应用丨R语言Meta分析【数据清洗、精美作图、回归分析、诊断分析、不确定性及贝叶斯应用】
目录 专题一、Meta分析的选题与文献计量分析CiteSpace应用 专题二、Meta分析与R语言数据清洗及相关应用 专题三、R语言Meta分析与精美作图 专题四、R语言Meta回归分析 专题五、R语言Meta诊断分析与进阶 专题六、R语言Meta分析的不确定性及贝叶斯应用 专题七、深度拓展…...
vscode eslint配置
1. 全局安装 eslint npm install -g eslint 2. control shift p 输入 settings 打开设置进行配置 3. 添加配置 {"workbench.colorTheme": "One Dark Pro","eslint.debug": true,"eslint.execArgv": null,"eslint.alwaysShow…...
C++ 对象模型 C++ Object Model
C 对象模型 C Object Model 文章目录 C 对象模型 C Object ModelC语言的数据及函数C的类C对象模型 C语言的数据及函数 C语言中,数据和函数是分开声明的。 数据 typedef struct point2d {float x;float y; } Point2d;函数 打印Point2d的数值 void Point2d_print…...
leetcode做题笔记47
给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 思路一:回溯 int* Source NULL; int Source_Size 0;int** Result NULL; int* Retcolsizes NULL; int Result_Index 0;int* Path NULL; int Path_Index 0;bool* Used …...
Linux Day04
目录 一、文件压缩与解压命令 1.1 tar cvf 文件名 ---打包命令生成.tar 1.2 tar xvf 文件名 ----解开包 生成文件 1.3 gzip .tar 压缩 生成.tar.gz压缩包 1.4 gzip -d .tar.gz 解压成包 1.5 直接把压缩包解压成文件 tar zxf .tar.gz 二、Linux 系统上 C 程序的…...
上海亚商投顾:沪指冲高回落 两市成交重回万亿
上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 市场情绪 三大指数今日冲高回落,盘初一度集体涨超1%,随后涨幅明显回落,上证50午后一度翻…...
MySql(简单处理查询结果--查询结果去重)
3. 现在运营需要查看用户来自于哪些学校,请从用户信息表中取出学校的去重数据。示例:user_profileiddevice_idgenderageuniversityprovince12138male21北京大学Beijing23214male复旦大学Shanghai36543female20北京大学Beijing42315female23浙江大学ZheJiang55432mal…...
116. 为项目监控员生成的警报添加标签
Procedure 程序To label alerts for Project Monitors, you must configure the Prometheus Federator Helm charts values section. This is done by adding additionalRuleLabels under defaultRules within helmProjectOperator. You can perform this modification during…...
2025届学术党必备的降重复率助手实际效果
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 对于AI生成文本展现出的高频特性,我们可运用如下一系列指令来实现去机械化的目标…...
用C++实现LBM格子玻尔兹曼方法MRT模拟加热气泡脱离
lbm格子玻尔兹曼方法mrt模拟加热气泡脱离c代码最近在研究流体力学相关的模拟,其中LBM(格子玻尔兹曼方法)的MRT(多松弛时间)模型在模拟加热气泡脱离这类复杂现象时展现出独特的优势。今天就来和大家分享一下如何用C 实现…...
你的微信记忆银行:三分钟学会永久保存珍贵聊天记录
你的微信记忆银行:三分钟学会永久保存珍贵聊天记录 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMs…...
Comsol 双层结构曲界面声场仿真探索
comsol 双层结构曲界面声场仿真 聚焦探头(焦距60mm,晶片直径14mm)辐射声场在双层介质(水钢)中声压分布,钢为凸界面,曲率半径50mm 当第二层介质声速大于第一层介质声速时,凸界面使声场…...
SecGPT-14B模型压力测试:验证OpenClaw高并发安全任务的稳定性
SecGPT-14B模型压力测试:验证OpenClaw高并发安全任务的稳定性 1. 测试背景与目标 最近在探索如何将OpenClaw与安全大模型结合,构建一个自动化安全分析助手。SecGPT-14B作为一款专注于网络安全的大模型,理论上可以处理端口扫描、日志分析等任…...
3步攻克Dlib安装难题:Windows Python环境零编译实战指南
3步攻克Dlib安装难题:Windows Python环境零编译实战指南 【免费下载链接】Dlib_Windows_Python3.x Dlib compiled binaries (.whl) for Python 3.7-3.14 and Windows x64 项目地址: https://gitcode.com/gh_mirrors/dl/Dlib_Windows_Python3.x 你是否曾在Win…...
从系统编程到 JavaScript/TypeScript
然而,在通往 AGI(通用人工智能)的道路上,一个反直觉的现象正在发生。如果你拆解当下最热门的 AI 项目,你会惊讶地发现:TypeScript 和 JavaScript 正在成为 AI 应用层的“官方语言”。OpenClaw (ClawdBot): …...
一站式B站直播录制解决方案:零基础掌握BililiveRecorder高效使用指南
一站式B站直播录制解决方案:零基础掌握BililiveRecorder高效使用指南 【免费下载链接】BililiveRecorder 录播姬 | mikufans 生放送录制 项目地址: https://gitcode.com/gh_mirrors/bi/BililiveRecorder 在数字内容爆炸的时代,如何永久保存喜爱的…...
