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

Azure App Service CORS MissingAllowOriginHeader错误原因咨询

问题原因分析
  • 应用网关CORS规则仅覆盖预检请求
    你配置的应用网关重写规则触发条件是Access-Control-Request-Method == "PUT",而这个请求头仅会在OPTIONS预检请求中携带,实际发起的PUT请求本身不存在该头,因此重写规则不会对实际PUT请求生效,导致PUT响应缺少Access-Control-Allow-Origin头,触发MissingAllowOriginHeader错误。
  • 多层CORS配置冲突
    你同时配置了三层CORS规则:.NET Core代码级CORS、Azure App Service内置CORS、应用网关重写CORS头。其中Azure App Service内置CORS优先级高于代码级配置,默认仅处理OPTIONS预检请求,会覆盖/删除代码中返回的CORS头,也会导致实际请求的CORS头丢失。
  • .NET Core CORS配置未生效
    你仅在ConfigureServices中注册了CORS策略,若未在Configure方法中正确添加app.UseCors(MyAllowSpecificOrigins)中间件,或是中间件顺序错误(需放在UseRouting之后、UseAuthorization之前),也会导致实际请求不会携带CORS响应头。
解决方案

你需要统一CORS处理层级,禁止多层同时处理CORS,可选择以下任意一种方案:

方案1:统一由应用网关处理CORS

  1. 删除.NET Core代码中所有CORS相关配置
  2. 关闭Azure App Service内置CORS,执行命令:az webapp cors remove --resource-group testrg --name appsvcwebapi --allowed-origins --all
  3. 修改应用网关重写规则:
    • 保留原有OPTIONS预检请求的CORS头配置
    • 新增一条无前置条件的重写规则,匹配所有实际业务请求(GET/PUT/POST等),为响应添加access-control-allow-origin: https://webappurl等必要CORS头

方案2:统一由Web API侧处理CORS

  1. 删除应用网关中所有CORS相关的重写规则
  2. 二选一保留一层CORS配置:
    • 保留代码级CORS:关闭App Service内置CORS,确认Configure方法中已按正确顺序添加app.UseCors(MyAllowSpecificOrigins)
    • 保留App Service内置CORS:删除代码中所有CORS相关配置,无需修改已执行的az webapp cors add配置

验证时直接查看实际PUT请求的响应头,确认携带Access-Control-Allow-Origin且值为https://webappurl即可解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:42:02