在 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
如何在 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