You need to enable JavaScript to run this app.
文档中心
容器服务

容器服务

复制全文
下载 pdf
自定义转发规则配置示例
配置转发流量跨域
复制全文
下载 pdf
配置转发流量跨域
ALB Ingress 支持配置转发流量跨域(CORS),用于控制前端跨域访问,实现前后端分离、多域名访问等业务场景。本文介绍跨域的配置方法和注意事项。​
注意​
  • 【邀测·申请试用】:该功能目前处于邀测阶段,如需使用,请提交申请。​
前提条件​
  • 已安装 alb-ingress-controller 组件,并升级至 v0.39.2 及以上版本。详情请参见 升级组件。​
使用限制​
  • 仅在 ALB Ingress 对接 ALB 标准版实例时,支持该配置。更多详情,请参见 ALB 实例类型概述。​
  • 如需同时配置多个流量转发动作,则跨域动作必须配置在限速动作之后,其他动作(例如重定向、重写等)之前。更多使用限制和注意事项,请参见 创建转发规则(标准版)。​
操作步骤​
ALB Ingress 支持通过 Annotation 配置转发流量跨域,示例和注解说明如下:​
注意​
注解中的{{service-name}}字段必须与spec.rules中配置的后端服务名称对应一致,例如在本例中,正确的注解为ingress.vke.volcengine.com/loadbalancer-actions.service-demo。​
​
apiVersion: networking.k8s.io/v1​
kind: Ingress​
metadata:​
name: alb-ingress # 自定义路由规则名称​
namespace: default # 路由规则所属的命名空间​
annotations:​
ingress.vke.volcengine.com/loadbalancer-actions.{{service-name}}: | # {{service-name}} 需要替换为服务的名称​
[​
{​
"type": "Cors",​
"corsConfig": {​
"allowOrigin": ["*"],​
"allowMethods": ["GET","POST","OPTIONS","PUT","PATCH","DELETE","HEAD"],​
"allowHeaders": ["Content-Type","Authorization"],​
"exposeHeaders": ["X-Custom-Header","Content-Length"],​
"allowCredentials": "off",​
"maxAge": 3600​
}​
},​
{​
"type": "ForwardGroup",​
"forwardGroupConfig": {​
"backends": [​
{​
"serviceName": "service-demo",​
"servicePort": 80​
}​
]​
}​
}​
]​
spec:​
ingressClassName: alb # ALBInstance 的资源名称​
rules:​
- host: example.com # 需要对外提供访问的域名​
http:​
paths:​
- pathType: Prefix # 路径匹配规则,默认为 Prefix(前缀匹配)​
path: / # 请求匹配的路径​
backend:​
service:​
name: service-demo # 需要对接的服务名称,注意需要和注解 loadbalancer-actions.{{service-name}} 里的 {{service-name}} 一致​
port: ​
name: use-annotation​
​
ingress.vke.volcengine.com/loadbalancer-actions.{{service-name}}注解中的参数说明如下表所示。​
​
字段​
类型​
是否必填​
描述​
type​
String​
是​
自定义转发规则的动作类型,当配置转发流量跨域时,必须配置为Cors。​
allowOrigin​
Array​
是​
配置允许访问该资源的 URI,用于控制哪些外部站点的跨域请求能够被服务端接受并放行。​
  • 支持指定具体的协议域名,表示仅允许固定域名进行访问。必须以http://或者https://开头,后跟一个域名或者一级的泛域名(*.test.abc.example.com)。例如https://web.example.com。​
  • 支持在域名后指定端口,端口范围 1~65535。例如https://web.example.com:443。​
  • 支持配置为通配符*,表示允许任意来源。​
注意​
当allowCredentials配置为 on 时,此配置必须指定为具体的域名,不可使用通配符*。​
allowMethods​
Array​
是​
配置服务端允许跨域请求使用的 HTTP 方法。用于在浏览器发起预检请求(Preflight)时,向客户端声明支持的请求类型。​
支持常见的 HTTP 方法,包括GET、POST、OPTIONS、PUT、PATCH、DELETE、HEAD等。允许配置多个 HTTP 方法,使用英文半角逗号,分隔拼接。例如 "GET","POST"。​
allowHeaders​
Array​
否​
配置在跨域请求中,允许客户端主动携带并发送的自定义 HTTP 请求头。​
  • 支持指定具体的 HTTP 请求头,例如Authorization。允许同时配置多个 HTTP 请求头,使用英文半角逗号,分隔拼接。例如 "Authorization","X-Custom-Header"。​
  • 支持配置为通配符*,表示允许携带所有 HTTP 请求头。​
exposeHeaders​
Array​
否​
配置在跨域请求响应中,允许浏览器访问和读取的自定义 HTTP 响应头。​
  • 支持指定具体的 HTTP 响应头,例如Authorization。允许配置多个 HTTP 响应头,使用英文半角逗号,分隔拼接。例如 "X-Custom-Header","Content-Length"。​
  • 支持配置为通配符*,表示允许浏览器访问响应中的所有自定义 HTTP 响应头。​
注意​
当后端服务会在响应头中返回特定的业务数据(如列表的分页总数、全链路追踪 ID 等),且前端代码需要读取并处理这些 Header 信息时,必须通过该参数显式暴露。​
allowCredentials​
String​
是​
配置跨域请求是否允许携带身份凭证,例如 Cookie。取值:​
  • on:允许携带身份凭证。​
  • off:禁止携带身份凭证。​
maxAge​
Integer​
否​
配置预检请求(OPTIONS)在浏览器的最大缓存时间。在有效时间内,浏览器发起同类跨域请求可跳过预检阶段,直接发送实际请求。整数形式,单位为秒。例如配置为 3600 表示 1 小时。​
​
结果验证​
查看配置​
  1. 单击左侧导航栏中 实例管理,在实例列表中选择目标 ALB 实例,在 操作 栏中单击 配置监听器。​
  • ​alt​​
  1. 在 监听器 页面中,选择目标监听器,在 操作 栏中单击 编辑转发规则,查看规则详情。规则配置详情,应该与下发的规则一致。​
  • ​​​
访问验证​
说明​
验证功能前,您需要在集群中部署后端应用和服务。本例中以 nginx 镜像,服务提供路径为/为例。部署方式可参见 使用 ALB Ingress 实现业务发布。​
使用 ALB Ingress 中配置的域名进行预检跨域。其中14.***.***.***为 ALB 公网 IP 地址。​
​
curl -ik -X OPTIONS 'http://example.com/' \​
--resolve example.com:80:14.***.***.*** \​
-H 'Origin: https://web.example.com' \​
-H 'Access-Control-Request-Method: POST' \​
-H 'Access-Control-Request-Headers: Content-Type, Authorization'​
​
预期结果如下,响应报文中包含了Access-Control-Allow-Origin、Access-Control-Allow-Methods、Access-Control-Max-Age等响应头,表示跨域功能已正确开启。​
​
HTTP/1.1 204 No Content​
Server: volcalb​
Date: Mon, 18 May 2026 04:09:37 GMT​
Connection: keep-alive​
Access-Control-Allow-Origin: https://web.example.com​
Vary: Origin​
Access-Control-Allow-Methods: GET,POST,PUT,OPTIONS​
Access-Control-Allow-Headers: Content-Type,Authorization​
Access-Control-Max-Age: 3600​
Vary: Accept-Encoding​
​
​
最近更新时间:2026.06.05 15:13:22
这个页面对您有帮助吗?
有用
有用
无用
无用