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

Azure API端点测试出现401 Unauthorized错误,如何实现完全公开无授权访问?

嗨,我来帮你搞定这个Azure API的401授权问题!你遇到的情况在日常开发中挺常见的,咱们一步步排查修复:

排查与修复步骤

1. 先确认Azure Function本身的授权级别

Azure Function的HTTP触发器默认是Function级别的授权,这会要求调用时携带函数密钥,哪怕你在API管理里取消了订阅要求也没用。你得把它改成Anonymous:

  • 登录Azure门户,打开你的Function App,找到对应的HTTP触发器函数
  • 点击集成选项卡,找到授权级别下拉框,选择Anonymous
  • 保存设置,最好重新部署一下你的Function代码确保生效

2. 检查API管理的入站策略

即使你取消了“require subscription”,API管理的入站策略可能还留着强制验证的规则:

  • 进入你的API管理实例,找到目标API
  • 切换到设计选项卡,查看入站处理的策略代码
  • 确保没有<validate-jwt>、<check-header>这类强制验证的片段,如果有就删掉,然后保存并发布API

3. 验证API关联的产品设置

API管理里的API必须关联到某个产品,如果关联的是需要订阅的产品,哪怕单个API取消了订阅要求也会失效:

  • 进入API的设置选项卡,找到产品关联区域
  • 确保关联的是Unlimited产品(默认的公开产品,不需要订阅),或者你自己创建的无订阅要求的产品
  • 如果之前关联的是Starter这类需要订阅的产品,赶紧切换过来

4. 检查Function App的访问控制

Function App本身可能设置了IP限制或者身份验证:

  • 打开Function App的网络选项卡,查看访问限制规则,如果有设置允许的IP范围,要么把API管理的IP加进去,要么暂时移除限制测试
  • 另外,去身份验证(旧版叫“App Service 身份验证”)选项卡,确认没有启用Azure AD、Google这类身份提供商,这些会强制要求用户登录

5. 绕过API管理直接测试Function端点

先排除API管理的问题,直接访问Function的原始端点(格式是https://<你的FunctionApp名称>.azurewebsites.net/api/<触发器名称>):

  • 如果直接访问能正常返回数据,那问题肯定在API管理的配置上,回到步骤2、3仔细检查
  • 如果直接访问也报401,那就是Function的授权级别没改对,回到步骤1重新设置

6. 清除API管理的缓存

有时候API管理的缓存会导致配置更新不生效:

  • 在API管理实例的概述页面,点击刷新缓存按钮
  • 或者在API的测试选项卡,点击清除缓存后再重新测试

完成这些步骤后,你可以用浏览器直接访问API管理的端点,或者用curl命令测试:curl https://<你的APIM名称>.azure-api.net/<你的API路径>,应该就能正常获取返回结果了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 17:22:49