如何允许OWIN令牌请求的特定CORS源、头和方法?

如何允许OWIN令牌请求的特定CORS源、头和方法?,cors,owin,asp.net-web-api2,Cors,Owin,Asp.net Web Api2,我们正在使用web api和OWIN创建我们自己的身份验证和授权提供商。这一切都很好,但现在我们的任务是允许CORS请求 CorsHttpConfigurationExtensions适用于我们的api,我们还使用CorsExtensions处理令牌请求。不过,事情是这样的:这一行 app.UseCors(CorsOptions.AllowAll); 在Startup.ConfigureAuth()中允许所有来源、标题项和方法,不是吗?这相当于 config.EnableCors(new E

我们正在使用web api和OWIN创建我们自己的身份验证和授权提供商。这一切都很好,但现在我们的任务是允许CORS请求

CorsHttpConfigurationExtensions
适用于我们的api,我们还使用
CorsExtensions
处理令牌请求。不过,事情是这样的:这一行

 app.UseCors(CorsOptions.AllowAll);
Startup.ConfigureAuth()
中允许所有来源、标题项和方法,不是吗?这相当于

config.EnableCors(new EnableCorsAttribute("*", "*", "*"));
WebApiConfig.Configure()
中-对吗?对于
CorsOptions
,只有一个枚举值
AllowAll
。而且没有任何地方可以用任何类型的属性来装饰令牌路由


我不太关心标题和动词(方法);大概OWIN程序集正在处理这些,例如,限制为POST。但我们确实希望将源标题限制在特定的域中。有人知道我们如何做到这一点吗?

使用OWIN OAuth,当您授予令牌时,您应该将origin头添加到响应中,在那里您可以添加所需的origin,看看本教程,它获取与客户端关联的origin,以及作为origin注入头中的内容

希望有帮助

using System.Threading.Tasks;
using Microsoft.Owin;
using Owin;
using Microsoft.Owin.Cors;
using System.Web.Cors;

[assembly: OwinStartup(typeof(SignalRSelfHost.Startup))]

namespace SignalRSelfHost
{
    public class Startup
    {

        public void Configuration(IAppBuilder app)
        {
            var policy = new CorsPolicy()
            {
                AllowAnyHeader = true,
                AllowAnyMethod = true,
                SupportsCredentials = true
            };

            // list of domains that are allowed can be added here
            policy.Origins.Add("domain"); 
            //be sure to include the port:
            //example: "http://localhost:8081"

            app.UseCors(new CorsOptions
            {
                PolicyProvider = new CorsPolicyProvider
                {
                    PolicyResolver = context => Task.FromResult(policy)
                }
            });

            app.MapSignalR();
        }
    }
}
请参阅本页