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

Azure应用网关配置Access-Control-Allow-Origin多源重写咨询

如何通过Azure应用网关配置多源Access-Control-Allow-Origin响应头(避免使用*)

完全可以实现这个需求,借助Azure应用网关的重写规则结合正则匹配,既能精准限定允许的CORS源列表,又能动态将匹配的请求Origin设为Access-Control-Allow-Origin响应头的值,非允许来源直接拒绝。

核心实现逻辑

  1. 提取请求头中的Origin字段值
  2. 用正则表达式匹配预定义的允许源列表,匹配成功则返回该Origin作为响应头值
  3. 匹配失败则直接返回403拒绝请求

具体配置步骤

1. 生成允许源的正则表达式

将你的允许源列表转换为正则(注意转义域名中的.,因为正则里.是通配符):
允许列表:

https://site1.example.com,
https://site2.example.com,
https://funkyChicken.farm.com

对应的正则:

^https://(site1\.example\.com|site2\.example\.com|funkyChicken\.farm\.com)$

如果需要支持带端口的源,可调整为:

^https://(site1\.example\.com|site2\.example\.com|funkyChicken\.farm\.com)(:\d+)?$

2. 配置Azure应用网关的重写规则集

  1. 进入Azure应用网关的重写规则面板,创建新的规则集
  2. 添加第一条规则(优先级设为1,确保先执行匹配逻辑):
    • 条件配置:
      • 条件类型选择「请求头」,头名称填Origin
      • 匹配类型选择「正则表达式」,输入上面生成的正则
      • 勾选「如果匹配则继续」
    • 操作配置:
      • 操作类型选择「设置响应头」
      • 头名称填Access-Control-Allow-Origin
      • 头值选择「动态值」,选择{http_origin}(即提取的请求Origin值)

3. 配置非允许来源的拦截规则

添加第二条规则(优先级设为2,仅当第一条规则不匹配时执行):

  • 条件配置:
    • 条件类型选择「请求头」,头名称填Origin
    • 匹配类型选择「不匹配正则表达式」,输入同一个允许源正则
  • 操作配置:
    • 操作类型选择「设置状态码」,状态码设为403 Forbidden
    • 可选:添加自定义响应头说明原因,比如X-CORS-Error: Origin not allowed

额外注意事项

  • 确保应用网关的路由规则已正确指向你的后端API,重写规则会在路由转发后生效
  • 对于OPTIONS预检请求,还需补充配置Access-Control-Allow-Methods、Access-Control-Allow-Headers等CORS相关头,同样可通过重写规则添加
  • 测试时需用不同Origin的请求验证:允许的源应返回对应Origin的响应头,非允许源返回403

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 16:13:38