【发布时间】: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 代码。我怎样才能解决这个错误? 使用匿名身份验证,它可以正常工作...
提前谢谢你。
【问题讨论】:
-
感谢您的回复,但是当我启用 Windows 和匿名身份验证并在控制器上设置授权属性时。在每次请求时,我都会在浏览器上弹出一个登录弹出窗口。在前面,选项请求 suportCredentials 为真。
标签: asp.net asp.net-web-api asp.net-core cors windows-authentication