我有一个带有令牌身份验证的ASP.NET Web Api 2.0项目,所有工作都主要遵循本文:
Token Based Authentication using ASP.NET Web API 2, Owin, and Identity, Bit Of Technology
但是我很难理解我的Startup.cs中的这行代码究竟是什么:
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
这不会使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[] { "*" });
在我的令牌提供商端点响应上启用Cors。
那么这个Microsoft.Owin.Cors中间件的用途是什么呢?因为每个地方我都读到了关于Web Api 2.0和Cors的这行代码
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
出现:
答案 0 :(得分:5)
感谢您关注我的教程。
此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
1}} class。
希望这能回答你的问题。