如何为OWIN令牌请求允许特定的CORS来源,标头和方法?

Bil*_*lyB 2 cors owin asp.net-web-api2

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

CorsHttpConfigurationExtensions为我们的api工作,我们还使用来处理了令牌请求CorsExtensions。事情是这样的:这条线

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

in Startup.ConfigureAuth()允许所有来源,标头项目和方法,不是吗?相当于

config.EnableCors(new EnableCorsAttribute("*", "*", "*"));
Run Code Online (Sandbox Code Playgroud)

WebApiConfig.Configure()-对吗?只有一个枚举值AllowAllCorsOptions。而且没有地方用任何种类的属性来装饰令牌路由。

我不太在意标题和动词(方法)。大概是OWIN程序集正在处理这些内容,例如仅限于POST。但是我们真的很想将原始标头限制在特定的域中。有谁知道我们如何做到这一点?

Rav*_*eja 5

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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

请参考此stackoverflow 链接