public static void Register(HttpConfiguration config)
        {
            config.EnableCors();
            // Web API routes
            config.EnableSystemDiagnosticsTracing().IsVerbose = true;
            config.MapHttpAttributeRoutes();

            var defaultPolicyProvider = new EnableCorsAttribute("*", "*", "*");

            defaultPolicyProvider.SupportsCredentials = true; //important if you are sending cookies
            AttributeBasedPolicyProviderFactory policyProviderFactory = new AttributeBasedPolicyProviderFactory();

            policyProviderFactory.DefaultPolicyProvider = defaultPolicyProvider;
            config.SetCorsPolicyProviderFactory(policyProviderFactory);

            config.Routes.MapHttpRoute(
                name: "BatchApi",
                routeTemplate: "api/batch",
                defaults: null,
                constraints: null,
                handler: new DefaultHttpBatchHandler(GlobalConfiguration.DefaultServer));

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional },
                constraints: null,
                handler: new CorsMessageHandler(config)
            {
                InnerHandler = new HttpControllerDispatcher(config)
            }
                );
        }
        public void EnableCors_AddsCorsPolicyProvider()
        {
            HttpConfiguration config = new HttpConfiguration();

            config.MessageHandlers.Clear();
            EnableCorsAttribute policyProvider = new EnableCorsAttribute();

            config.EnableCors(policyProvider);
            config.Initializer(config);

            ICorsPolicyProviderFactory          providerFactory          = config.GetCorsPolicyProviderFactory();
            AttributeBasedPolicyProviderFactory attributeProviderFactory = Assert.IsType <AttributeBasedPolicyProviderFactory>(providerFactory);

            Assert.Same(policyProvider, attributeProviderFactory.DefaultPolicyProvider);
        }
        /// <summary>
        /// Enables the support for CORS.
        /// </summary>
        /// <param name="httpConfiguration">The <see cref="HttpConfiguration"/>.</param>
        /// <param name="defaultPolicyProvider">The default <see cref="ICorsPolicyProvider"/>.</param>
        /// <exception cref="System.ArgumentNullException">httpConfiguration</exception>
        public static void EnableCors(this HttpConfiguration httpConfiguration, ICorsPolicyProvider defaultPolicyProvider)
        {
            if (httpConfiguration == null)
            {
                throw new ArgumentNullException("httpConfiguration");
            }

            if (defaultPolicyProvider != null)
            {
                AttributeBasedPolicyProviderFactory policyProviderFactory = new AttributeBasedPolicyProviderFactory();
                policyProviderFactory.DefaultPolicyProvider = defaultPolicyProvider;
                httpConfiguration.SetCorsPolicyProviderFactory(policyProviderFactory);
            }

            AddCorsMessageHandler(httpConfiguration);
        }
 public SupportsCredentialsCorsPolicyProviderFactory(ICorsConfigurationFactory providerFactory, AttributeBasedPolicyProviderFactory attributeBasedPolicyProviderFactory)
     : base(providerFactory, attributeBasedPolicyProviderFactory)
 {
 }