与ASP.NET Web Api 2.0一起使用时,Microsoft.Owin.Cors中间件究竟是什么?

Mil*_*hev 6 cors owin asp.net-web-api2

我有一个带有令牌身份验证的ASP.NET Web Api 2.0项目,所有工作主要完成本文之后:

使用ASP.NET Web API 2,Owin和Identity,Bit Of Technology进行基于令牌的身份验证

但是我很难理解我的Startup.cs中的这行代码究竟是做什么的:

app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
Run Code Online (Sandbox Code Playgroud)

这不会使Web Api将Access-Control-Allow-Origin标头添加到我的API响应中,换句话说,它不会在我的Web Api中启用Cors(仍然试图了解如何执行此操作).它甚至没有将它添加到我的承载令牌认证服务器响应中.我必须将此代码提供给OAuthAuthorizationServerProvider:

public override Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
    {
        context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" }); 
Run Code Online (Sandbox Code Playgroud)

在我的令牌提供者端点响应上启用Cors.

那么这个Microsoft.Owin.Cors中间件的用途是什么呢?因为我到处读到有关Web Api 2.0和Cors的这一行代码

app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
Run Code Online (Sandbox Code Playgroud)

过来:

Tai*_*deh 6

谢谢你关注我的教程.

此LOC app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);用于为API本身启用CORS(任何继承自的控制器ApiController).

但是对于Authz服务器和终点,/token这没有任何影响,这就是为什么我要添加context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });这个终点不是API的一部分而且不从ApiController类继承.

希望这能回答你的问题.

  • 你是对的app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll)确实在Web Api上启用了cors.我遇到了网络API的部署问题.谢谢你的回答和文章! (2认同)