Blazor WASM调用Azure Function首次成功,二次调用报401未授权
检查函数密钥的缓存与复用逻辑
确认首次调用后,x-functions-key是否被意外修改、清空或覆盖。调试阶段可以在每次请求前打印密钥值,确保两次请求携带的是同一个有效密钥。避免在组件生命周期代码中错误处理密钥缓存。验证Azure Function的密钥配置
登录Azure门户进入目标Function App,检查函数密钥是否设置了过期时间,临时密钥可能自动失效,建议改用函数级持久密钥或主机密钥(注意主机密钥权限范围更大,按需选择)。同时确认使用的密钥与GetTable函数对应,不要混用其他函数的密钥。排查请求头的携带正确性
检查第二次请求的请求头,确认x-functions-key是否被正确携带。Blazor中建议通过依赖注入复用HttpClient实例,并初始化时统一添加密钥头,避免每次请求临时添加时出现遗漏:// Program.cs中配置HttpClient builder.Services.AddScoped(sp => { var client = new HttpClient { BaseAddress = new Uri("https://n-mdm.azurewebsites.net/api/") }; client.DefaultRequestHeaders.Add("x-functions-key", "你的有效函数密钥"); return client; });检查Azure Function的授权策略
确认GetTable函数的授权级别为Function,Admin级别需使用主机密钥,Anonymous级别无需密钥但安全性较低。同时查看Azure门户的监控>日志,获取401请求的详细错误信息,明确是密钥无效、缺失还是权限不匹配导致的问题。排查浏览器缓存与CORS配置
尝试清除浏览器缓存或使用无痕模式测试,避免缓存篡改请求头。再次确认Azure门户的CORS配置包含本地调试地址http://localhost:1010,且允许的HTTP方法包含你调用时使用的类型(如GET/POST)。
内容的提问来源于stack exchange,提问作者DataWrangler1980
相关产品推荐
相关产品推荐

