如何在WebAPI 2中进行CORS身份验证?

场景很简单,我需要从另一台服务器(不同于API服务器)登录才能检索访问令牌。


我Microsoft.Owin.Cors在API服务器上安装了包。在Startup.Auth.cs文件中,public void ConfigureAuth(IAppBuilder app)我加入了


app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);

在WebApiConfig.cs下面public static void Register(HttpConfiguration config),我添加了以下几行:


// Cors

var cors = new EnableCorsAttribute("*", "*", "GET, POST, OPTIONS");

config.EnableCors(cors);

我还应该改变什么?


元芳怎么了
浏览 601回答 3
3回答

慕尼黑5688855

看看我发现了什么!在里面添加一些自定义标题<system.webServer>。<httpProtocol>&nbsp; <customHeaders>&nbsp; &nbsp; <add name="Access-Control-Allow-Origin" value="*" />&nbsp; &nbsp; <add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS, PUT, DELETE" />&nbsp; </customHeaders></httpProtocol>然后我可以进行CORS身份验证。

慕少森

我为基于AngularJS的Web客户端设置了许多试错法。对我来说,下面的方法适用于ASP.NET WebApi 2.2和基于OAuth的服务。安装Microsoft.AspNet.WebApi.Corsnuget包。安装Microsoft.Owin.Corsnuget包。在Startup.cs文件中添加config.EnableCors(new EnableCorsAttribute("*", "*", "GET, POST, OPTIONS, PUT, DELETE"));到上面的WebApiConfig.Register(config);行。添加app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);到Startup.Auth.cs文件。这必须在打电话之前完成IAppBuilder.UseWebApi删除Blaise所做的任何xml设置。我在这里发现了很多设置变化和组合stackoverflow或博客文章。所以,布莱斯的方法可能会或可能不会错。这只是我想的另一种设置。

RISEBY

经过几个小时的搜索并查看了许多不同的解决方案,我已经设法按照下面的方式工作。这种情况有很多原因。您很可能在错误的位置启用了CORS,或者启用了两次或根本没有启用CORS。如果您正在使用Web API和Owin Token端点,那么您需要删除Web API方法中对CORS的所有引用并添加正确的owin方法,因为web api cors将无法与Token端点一起使用,而Owin cors将适用于两个Web API和Token auth端点让我们开始:确保已安装Owin Cors软件包删除您拥有的任何行eg.config.EnableCors();&nbsp;从您的WebAPIconfig.cs文件转到您的startup.cs文件,确保在任何其他配置运行之前执行Owin Cors。app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);&nbsp;ConfigureAuth(APP);如果仍有问题请访问:Startup.Auth.cs并确保在ConfigureAuth方法中有以下内容(如果您的startup.cs文件正确,则不需要此项)app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
打开App,查看更多内容
随时随地看视频慕课网APP