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

调用.Net Core API时Postman返回401未授权错误如何解决?

排查及解决方案

postman中计算的请求头

  • 优先检查中间件顺序:.NET Core的认证中间件app.UseAuthentication()必须放在app.UseAuthorization()之前,且二者都要放在app.MapControllers()前面。如果顺序颠倒,哪怕接口加了[AllowAnonymous]特性,也会优先触发授权校验返回401。
  • 清理Postman的冗余认证配置:如果你在Postman的Authorization标签页误配置了Bearer Token、Basic Auth等认证规则,哪怕接口允许匿名访问,只要携带的认证信息非法/过期,部分鉴权逻辑会直接拦截返回401,不会触发[AllowAnonymous]的免校验逻辑。可以先清空所有自定义请求头,仅保留Content-Type: application/json后重试。
  • 核对全局授权过滤器配置:如果在Program.cs中配置了全局授权策略,参考如下:
builder.Services.AddControllers(options =>
{
    options.Filters.Add(new AuthorizeFilter());
});

需要确认[AllowAnonymous]特性是直接加在目标Action方法上,同时确认该特性引用的是Microsoft.AspNetCore.Authorization命名空间下的官方特性,避免引用了同名的自定义类导致失效。

  • 临时测试宽松CORS规则:如果WebAPI配置了CORS限制来源,Postman请求携带的Origin头不符合规则时,部分场景也会误返回401,可以临时加全局宽松CORS配置验证:
builder.Services.AddCors(options =>
{
    options.AddPolicy("TestAll", policy =>
    {
        policy.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader();
    });
});
// 中间件注册需放在UseAuthorization之前
app.UseCors("TestAll");
  • 排查自定义鉴权中间件:如果自己实现了全局请求拦截中间件,且该中间件没有做[AllowAnonymous]特性的判断逻辑,会直接跳过官方授权规则拦截请求返回401,可以临时注释自定义中间件测试是否恢复正常。
  • 核对请求路径和方法:Swagger会自动拼接路由前缀,如果你手动在Postman填写的路由缺了前缀、或者HTTP方法选错,刚好匹配到了其他需要认证的接口,也会返回401,核对路径和方法和Swagger显示的完全一致即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:24:00