You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

K8s中Ingress配置HTTPS后拦截HTTP后端响应如何解决?

故障根因

你遇到的报错并非Ingress拦截返回内容,而是浏览器的混合内容安全策略拦截:

从HTTPS站点加载的页面,内部JS主动发起HTTP协议的异步请求会被浏览器默认阻止,请求还未离开客户端就被拦截,和K8s集群内部webserver到查询服务的HTTP通信链路无关。

修复方案

方案1:前端请求改为同源相对路径(最推荐,适配性最高)

  • 修改Angular代码里硬编码的后端请求地址,把http://backend:port/end_point这类绝对HTTP地址改为/api/end_point这类相对路径,请求会自动沿用当前页面的HTTPS协议与域名,即请求地址变为https://myserver.com/api/end_point
  • 在Ingress中新增路径转发规则,将/api/前缀的请求直接转发到后端的查询响应服务,无需为后端服务单独配置HTTPS证书

方案2:配置Ingress传递HTTPS标识(适配后端返回绝对路径的场景)

如果你的后端服务会返回带协议的绝对路径响应,需要配置链路透传HTTPS标识:

  • 给对应Ingress资源添加如下annotations(以NGINX Ingress为例):
annotations:
  nginx.ingress.kubernetes.io/ssl-redirect: "true"
  nginx.ingress.kubernetes.io/use-forwarded-headers: "true"
  nginx.ingress.kubernetes.io/x-forwarded-proto: "https"
  • 同时配置Angular对应的webserver(如Nginx、Node.js)信任X-Forwarded系列头,以Nginx为例,在配置中新增:
fastcgi_param HTTPS on;
fastcgi_param HTTP_X_FORWARDED_PROTO $http_x_forwarded_proto;

方案3:强制升级不安全请求(临时兜底方案)

如果暂时无法修改前端代码,可以在前端webserver的响应头中添加内容安全策略配置,让浏览器自动把HTTP请求升级为HTTPS发起:

add_header Content-Security-Policy "upgrade-insecure-requests;";

此方案为兜底方案,需要确认升级后的HTTPS请求路径可以正常访问。

内容的提问来源于stack exchange,提问作者Jin Ma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 18:54:02