c# - 使用Windows身份验证的Asp.net核心Web API - Cors请求未经授权

标签 c# rest .net-core asp.net-web-api2

在我的 asp.net 核心 web api 中,我已经按照来自 MS documentation 的文章配置了 Cors。 . Web API 应用程序正在使用 Windows 身份验证(未启用匿名身份验证)。在 startup.cs

中创建了 Cor 的策略并添加了中间件,如下所示
public void ConfigureServices(IServiceCollection services)
{
    services.AddCors(options =>
    {
        options.AddPolicy("CorsPolicy",
            builder => builder.WithOrigins("http://localhost:4200")
                .AllowAnyMethod()
                .AllowAnyHeader()
                .AllowCredentials()
            );
    });

    services.AddMvc().AddJsonOptions(options => {
        options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
    });
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{         
    //Enable CORS policy 
    app.UseCors("CorsPolicy");
    app.UseMvc();
}

还应用了每个 Controller 级别的策略

[EnableCors("CorsPolicy"), Route("api/[controller]")]
public class LocationController : BaseController<Location>
{
  //code
}

选项请求正在获得未授权。请求和响应看起来像

enter image description here

我见过类似的问题并尝试了几乎所有的解决方案,但选项请求仍然失败。

最佳答案

您可能想阅读此主题:https://github.com/aspnet/CORS/issues/60 .您可以混合使用匿名和 NTLM,这样您的 CORS 预检不会被拒绝(因为它们不包含 Windows 凭据)。 IIS 在到达中间件之前处理 NTLM 身份验证,因此这可能是 IIS 的事情。您可能需要允许匿名 COR 预检。

关于c# - 使用Windows身份验证的Asp.net核心Web API - Cors请求未经授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50130623/

相关文章:

java - Spring Boot 本地化问题 - Accept-Language header

java - Spring REST 从以下位置获取对象列表

c# - 以 MVVM 方式处理 UWP AutoSuggestionBox 事件

c# - 我们可以使用 zxing.mobile 背靠背扫描多个条形码吗

c# - 为ZXing.Net生成的二维码添加自定义图片或文字

c# - SQL Server 添加字符串值时列名无效

apache - 在 Tomcat 应用程序中使用来自 Apache 的应用程序

c# - 为什么Angular的请求头修改会抛出option 401错误

c# - EF Core 3.0 中的拥有类型映射问题

c# - 异步回调中的属性集未保持设置