我有一个带有令牌身份验证的 ASP.NET Web Api 2.0 项目,所有内容主要按照本文完成:
使用 ASP.NET Web API 2、Owin 和 Identity 进行基于令牌的身份验证 http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/, 一点技术
但我很难理解 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);
过来:
感谢您关注我的教程。
这个LOCapp.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
用于为 API 本身启用 CORS(任何继承自ApiController
).
但对于 Authz 服务器和端点/token
这不会产生任何影响,这就是为什么我必须添加context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });
该端点不是 API 的一部分,也不继承自ApiController
class.
希望这能回答您的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)