在我的 asp.net 核心 web api 中,我已经按照来自 MS documentation 的文章配置了 Cors。 . Web API 应用程序正在使用 Windows 身份验证(未启用匿名身份验证)。在 startup.cs
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
}
选项请求正在获得未授权。请求和响应看起来像
我见过类似的问题并尝试了几乎所有的解决方案,但选项请求仍然失败。
最佳答案
您可能想阅读此主题: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/