在 windows 身份验证 ASP.NET Core 2.0 之前拦截 HTTP OPTIONS

Intercept HTTP OPTIONS before windows authentication ASP.NET Core 2.0

如何在 IIS windows 身份验证之前拦截 http 选项请求(Cors Preflight)?

我制作了一个中间件并尝试了这个:

 public async Task Invoke(HttpContext context)
    {
        if (context.Request.Method.Equals("OPTIONS"))
        {
            context.Response.StatusCode = 204;
            context.Response.Headers.Add("Access-Control-Allow-Origin", new [] {"http://cwfr003320:9393"});
            context.Response.Headers.Add("Access-Control-Allow-Credentials", new[] { "true" });
            context.Response.Headers.Add("Access-Control-Allow-Methods", new[] { "GET, POST, PUT, DELETE, OPTIONS" });
            context.Response.Headers.Add("Access-Control-Allow-Headers", new[] { "Accepts, Content-Type, Origin,Access-Control-Allow-Origin, Access-Control-Allow-Credentials" });
            context.Response.Headers.Add("Access-Control-Max-Age", new[] { "3600" });
            return; 
        }
        await _next.Invoke(context);
    }

但是,我收到了选项请求的 401 代码。我该如何解决这个错误? 使用匿名身份验证,它可以正常工作...

提前谢谢你。

您需要使用 IIS CORS 模块来允许预检请求通过 Windows 身份验证,

https://blogs.iis.net/iisteam/getting-started-with-the-iis-cors-module