【问题标题】:Intercept HTTP OPTIONS before windows authentication ASP.NET Core 2.0在 windows 身份验证 ASP.NET Core 2.0 之前拦截 HTTP OPTIONS
【发布时间】:2018-09-04 15:12:19
【问题描述】:

如何在 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 代码。我怎样才能解决这个错误? 使用匿名身份验证,它可以正常工作...

提前谢谢你。

【问题讨论】:

  • 您必须为此启用匿名和窗口。见docs.microsoft.com/en-us/aspnet/core/security/authentication/…
  • 感谢您的回复,但是当我启用 Windows 和匿名身份验证并在控制器上设置授权属性时。在每次请求时,我都会在浏览器上弹出一个登录弹出窗口。在前面,选项请求 suportCredentials 为真。

标签: asp.net asp.net-web-api asp.net-core cors windows-authentication


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    • 2019-04-19
    • 1970-01-01
    • 2018-06-23
    • 2019-04-19
    • 2019-07-08
    • 1970-01-01
    相关资源
    最近更新 更多