网关问题

Authorization 后端无法获取
描述
前端请求携带Authorization请求头,但后端无法获取

解决方案
联系网关开发增加放行配置

apollo配置

找到AppId: api-gateway
增加zuul.routes.{服务名称}.sensitive-headers=
增加zuul.routes.{服务名称}.custom-sensitive-headers=true
重启网关

访问后端报404
描述
通过网关地址访问, 但是报404

解决方案
报404原因有很多, 可按如下方法排查:

查看网关接入流程,确认已经正常接入
检查请求地址是否正确, 格式: 网关访问地址/服务名称/服务url eg: https://apptest.t3go.cn:3643/driver-app-api/api/driver/v1/login/login
检查Consul是否已经注册, 登陆consul 页面, 搜索服务是否已存在、健康检查是否正常的
检查服务是否发布最新版, 可登陆服务器访问下该路径是否存在

Consul 健康检查失败
描述
服务已经成功注册, 但是健康检查失败

解决方案
主要原因是健康检查接口返回非200状态码, 可按如下方法排查:

检验健康检查接口是否正常, 健康检查接口可查看配置项 spring.cloud.consul.discovery.health-check-url
联系中间件运维登陆consul服务器, curl 访问健康检查接口, 如果访问失败可能是安全组配置的问题,联系运维或OA申请开通安全组

请求有时无法到后端
描述
第一次请求api能收到,第二次请求,api没收到,第三次,又收到了

解决方案
主要原因是其它环境的服务注册到consul了, 检查下consul注册列表, 联系中间件运维删除其它环境的服务

前端访问报跨域异常
描述
前端请求时发生跨域异常

解决方案
目前网关已经做了跨域处理, 一般情况不会报跨域, 如果发生跨域可按如下步骤排查:

新增自定义请求头,需要找中间件运维配置放行
HTTP标准请求头是默认放行的,并且个别自定义请求头也是放行,如:DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,token,appid,noncestr,driType,sign,grayVersion
请求响应返回4XX、5XX状态码, 浏览器也会报跨域异常, 使用postman或其它工具发请求排查接口是否正常
具体详情: https://fetch.spec.whatwg.org/#statuses
常见错误 出现 No ‘xxxx’ header is present no the requested resource
后端服务也做了跨域, 导致重复跨域响应头, 后端去掉相关的跨域处理代码
常见错误 the ‘xxxx’ header contains multiple values ‘x,x’, but only one is allowed
跨域相关知识点可参考: https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS | https://fetch.spec.whatwg.org/

通用解决方法
不走网关,直接访问服务器, 验证是否能重现问题

用户信息获取:

redis db3

domainId = AUTH:TOKEN:ACCOUNT:${token}

以下是网关转发后端的请求头:

accountNew=AUTH:USER:GATEWAY:${domainId}

systemId=AUTH:TOKEN:SYSTEM:${token}

authUserId=domainId.split("😊[0]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值