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

Angular应用调用受保护Web API出现CORS及401未授权错误如何处理

问题修复指南

CORS跨域报错修复

你碰到的CORS报错是后端ASP.NET Core未配置跨域策略导致的,按以下步骤配置即可:

  • 在Program.cs文件中先注册CORS服务,注意服务注册顺序要在身份验证、授权服务之前:
builder.Services.AddCors(options =>
{
    options.AddPolicy("AllowAngularDev", policy =>
    {
        policy.WithOrigins("http://localhost:4200")
              .AllowAnyHeader()
              .AllowAnyMethod()
              .AllowCredentials();
    });
});
  • 中间件管道配置时,要把UseCors("AllowAngularDev")放在UseRouting之后,UseAuthentication和UseAuthorization之前,顺序错误会导致配置不生效。

Authorization头缺失修复

正常登录Azure AD但请求不带Authorization头,是MSAL拦截器配置错误导致的:

  • 确认Angular项目中已经正确注册了MSAL HTTP拦截器,且拦截器配置的受保护资源列表包含了你后端API的地址前缀。
  • 确认你调用API前申请登录权限时,参数里包含了你自定义暴露的API scope,仅申请登录相关的OpenID、Profile等scope无法获取到访问API所需的令牌,拦截器自然不会附加请求头。

401未授权问题排查

你没有单独创建API应用注册的操作符合单应用集成场景规范,不需要额外新增应用注册,只要确保自定义scope是在当前SPA的应用注册下创建即可。如果完成以上两步后还返回401,按以下顺序排查:

  • 检查后端Azure AD配置的Audience参数,值必须和你应用注册中「暴露API」板块填写的应用ID URI一致,通常格式为api://<你的应用客户端ID>。
  • 确认应用注册中你创建的自定义scope已经启用,且前端申请权限时已经正确添加了该scope,没有拼写错误。
  • 可以先复制前端获取到的访问令牌,用Postman携带该令牌调用API接口,先排除后端配置错误的可能性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 01:45:01