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

从Azure API Management调用Azure Function出现CORS错误如何解决?

问题产生原因
  • 现有CORS策略缺失预检请求必要配置:当前配置仅放开了跨域来源和请求方法,未配置允许的请求头。Blazor WASM发起的请求通常携带Content-Type、Authorization等自定义头,预检(OPTIONS)请求会校验这些头是否被允许,未配置的情况下CORS策略不会生效,不会返回对应的跨域响应头。
  • APIM未匹配OPTIONS请求的处理规则:多数用户创建API操作时仅添加GET/POST等业务方法,没有显式创建OPTIONS方法的映射,预检请求到达APIM后直接返回404/405错误,根本不会触发已配置的CORS策略,自然没有跨域响应头。
  • CORS策略作用范围错误:如果将CORS策略配置在单个操作、错误的产品/API层级,目标接口请求无法命中CORS规则,也会导致跨域头缺失。
解决方案

步骤1:补全CORS策略配置

替换现有CORS配置为完整版本,测试阶段可先用通配符,生产环境建议收敛到实际用到的域名、头信息:

<policies>
<inbound>
    <cors>
        <allowed-origins>
            <origin>*</origin>
            <!-- 生产环境建议替换为具体域名,例如 <origin>https://localhost:5001</origin> -->
        </allowed-origins>
        <allowed-methods>
            <method>*</method>
            <!-- 兼容低版本APIM可显式添加 <method>OPTIONS</method> -->
        </allowed-methods>
        <allowed-headers>
            <header>*</header>
            <!-- 可按需指定实际用到的头,例如 Content-Type、Authorization -->
        </allowed-headers>
        <expose-headers>
            <header>*</header>
            <!-- 前端需要读取自定义响应头时必须配置 -->
        </expose-headers>
        <!-- 请求需要携带凭证(JWT、Cookie)时添加下面配置,同时allowed-origins不能用通配符* -->
        <!-- <allow-credentials>true</allow-credentials> -->
    </cors>
</inbound>
<backend>
    <forward-request />
</backend>
<outbound />
<on-error />
</policies>

步骤2:配置OPTIONS请求支持

二选一即可:

  • 方案A:在目标API下手动添加OPTIONS操作,路径与业务接口(本例为/teste/Teste)一致,无需配置后端转发,CORS策略会在入站阶段直接处理OPTIONS请求并返回响应。
  • 方案B:如果全API都需要支持跨域,可在API的「所有操作」层级配置上述CORS策略,开启APIM的「自动处理OPTIONS预检请求」开关,无需逐个添加OPTIONS操作。

步骤3:确认策略作用范围

建议先将CORS策略配置在目标API的全局层级,而非单个操作或产品层级,确保所有该API下的请求都能命中CORS规则,验证通过后再按需缩小作用范围。

验证方法

执行curl命令发预检请求,查看返回头是否包含Access-Control-Allow-Origin即可确认是否生效:

curl -X OPTIONS https://example-api.azure-api.net/teste/Teste -H "Origin: https://localhost:5001" -H "Access-Control-Request-Method: GET" -v

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:54:03