十二、eureka部署成功之后:浏览器访问的报错 ingress解析到后端的服务报错


可以看到srv后端对应的endpoints的端口为空,ingerss是转发到了后端的srv,但是后端的endpoints为空,导致整个访问失败

portal访问商品失败
步骤2:进入 portal pod 执行 curl 命令
执行以下命令进入 portal pod 并测试接口:
# 进入 portal pod 的 shell
kubectl exec -it portal-service-74656fbf49-zjx6j -n gongsi-dev -- /bin/sh
# 在 pod 内部执行 curl 测试
curl -v "http://order-service-svc.gongsi-dev.svc.cluster.local/order/queryAllOrder?page=1&limit=10"

path不对,改成下面的形式



检查之后才发现数据库的地址和密码配置错误了

配置正确之后,再次在集群内部的pod进行访问

接下来可以在网关进行测试
curl -v "http://gateway.test.com:9080/order/queryAllOrder?page=1&limit=10" \
-H "Accept: application/json" \
-H "Referer: http://portal.test.com:9080/"
这个通过网关(gateway.test.com)访问订单列表接口(/order/queryAllOrder)的请求已经失败。截图显示请求已发出但未展示关键的HTTP状态码和响应体,这是定位问题的关键。
核心问题在于:请求未成功到达后端服务或网关未能正确处理响应。
这里有几个关键点:第一就是网关是通过ingerss保留出来的,对应的网关的域名是http://gateway.test.com,其中9080是ingerss control修改的对外的端口,默认是80,因为和自己电脑上面安装的nginx默认的80端口存在冲突,就将地址修改为了9080,其中/order/queryAllOrder,这里就是网关的配置
spring: cloud: gateway: discovery: locator: #开启以服务id去注册中心上获取转发地址 enabled: true ##小写serviceId lower-case-service-id: true routes: - id: product-service uri: lb://product-service filters: - StripPrefix=1 predicates: - Path=/product/** - id: order-service uri: lb://order-service filters: - StripPrefix=1 predicates: - Path=/order/** - id: stock-service uri: lb://stock-service filters: - StripPrefix=1 predicates: - Path=/stock/** eureka: instance: prefer-ip-address: true client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://eureka.test.com:9080/eureka
路由2:order-service
-
类似地,匹配
/order/**路径,去掉前缀后转发到order-service

最终会转发到 order-service/的这个接口queryAllOrder?page=1&limit=10" \
直接访问curl -k http://gateway.test.com:9080/product/queryAllProduct?page=1&limit=10可以返回数据,但是浏览器饭访问去报错


经过判断应该是跨域的问题

在浏览器开发者工具的控制台中,运行以下 JavaScript 测试:
// 测试跨域请求 fetch('http://gateway.test.com:9080/product/queryAllProduct?page=1&limit=10', { method: 'GET', mode: 'cors', credentials: 'include' }) .then(response => console.log(response)) .catch(error => console.error('CORS Error:', error));
保持发现的问题是

在本地的window的hosts文件上面配置域名映射
-
假设查到的IP是
192.168.1.100。 -
修改本地hosts文件:
-
Windows系统:文件位于
C:\Windows\System32\drivers\etc\hosts,用管理员权限的记事本编辑。 -
Mac/Linux系统:文件位于
/etc/hosts,使用sudo vim /etc/hosts编辑。
-

再次尝试浏览器就成功访问了

posted on 2026-03-18 20:51 luzhouxiaoshuai 阅读(21) 评论(0) 收藏 举报
浙公网安备 33010602011771号