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

Google Cloud Load Balancing配置通配符子域CORS跨域方法

配置失效根因

Google Cloud Load Balancing 自带的基础CORS配置项不支持识别*.mywebsite.example这类泛域名通配规则,仅对填写的源地址做完全精确匹配,你之前截图里的写法会被当成普通字符串处理,自然无法匹配任意子域的请求。

推荐配置方案(Cloud Armor 动态规则,适配所有后端类型)

该方案无需修改后端服务代码/配置,直接通过负载均衡绑定的Cloud Armor策略实现动态子域匹配、自动注入合法CORS头,是生产环境最稳定的实现方式:

  • 进入对应负载均衡绑定的Cloud Armor安全策略配置页,新建优先级高于其他拦截规则的自定义规则
  • 规则匹配表达式填写以下内容,可精准匹配所有mywebsite.example下的任意子域请求(仅匹配HTTPS源,如需支持HTTP可将表达式里的https改为https?):
request.headers['origin'].matches('https://[a-zA-Z0-9-]+\.mywebsite\.example$')
  • 规则动作设置为「允许」,在自定义响应头配置项中添加以下头信息:
    • Access-Control-Allow-Origin: {origin_request_header}:自动回填请求携带的合法Origin值,避免硬编码*导致带凭证的跨域请求被浏览器拦截
    • Access-Control-Allow-Credentials: true:如果跨域请求需要携带Cookie、Authorization等凭证信息则添加,无凭证需求可省略
    • Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS:根据业务实际支持的请求方法调整
    • Access-Control-Allow-Headers: Content-Type, Authorization:根据业务实际用到的自定义请求头调整
    • Access-Control-Max-Age: 86400:设置预检请求缓存时间,减少重复OPTIONS请求
  • 额外新增一条优先级稍低于上述规则的预检请求专用规则,匹配表达式为request.method == 'OPTIONS',动作设置为直接返回204状态码,同时携带上述全套CORS响应头,无需将OPTIONS请求转发到后端,降低后端负载。
避坑说明
  • 禁止同时配置Access-Control-Allow-Origin: *和Access-Control-Allow-Credentials: true,该组合会被浏览器安全策略直接拦截
  • 写匹配正则时必须加结尾符$,防止mywebsite.example.evil.com这类伪造源绕过匹配规则
  • 如果后端服务本身会返回CORS响应头,请关闭后端的CORS配置,避免负载均衡和后端返回重复CORS头导致浏览器解析失败
  • 如果你使用Cloud Storage作为负载均衡后端,也可以直接在存储桶的CORS规则中配置泛域名支持,配置示例如下:
[
  {
    "origin": ["https://*.mywebsite.example"],
    "method": ["GET", "POST", "PUT", "DELETE", "OPTIONS"],
    "responseHeader": ["Content-Type", "Authorization"],
    "maxAgeSeconds": 86400
  }
]

内容的提问来源于stack exchange,提问作者Ted Hoang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:15:48