using Microsoft.Extensions.DependencyInjection; 
 | 
using System; 
 | 
using System.Collections.Generic; 
 | 
using System.Linq; 
 | 
using System.Text; 
 | 
using System.Threading.Tasks; 
 | 
using WIDESEAWCS_Core.Helper; 
 | 
  
 | 
namespace WIDESEAWCS_Core.Extensions 
 | 
{ 
 | 
    /// <summary> 
 | 
    /// Cors 跨域 
 | 
    /// </summary> 
 | 
    public static class CorsSetup 
 | 
    { 
 | 
        /// <summary> 
 | 
        /// 跨域 
 | 
        /// </summary> 
 | 
        /// <param name="services"></param> 
 | 
        /// <exception cref="ArgumentNullException"></exception> 
 | 
        public static void AddCorsSetup(this IServiceCollection services) 
 | 
        { 
 | 
            if (services == null) throw new ArgumentNullException(nameof(services)); 
 | 
  
 | 
            services.AddCors(c => 
 | 
            { 
 | 
                if (!AppSettings.app(new string[] { "Cors", "EnableAllIPs" }).ObjToBool()) 
 | 
                { 
 | 
                    c.AddPolicy(AppSettings.app(new string[] {"Cors", "PolicyName" }), 
 | 
  
 | 
                        policy => 
 | 
                        { 
 | 
                            policy 
 | 
                            .WithOrigins(AppSettings.app(new string[] { "Cors", "IPs" }).Split(',')) 
 | 
                            .AllowAnyHeader()//Ensures that the policy allows any header. 
 | 
                            .AllowAnyMethod(); 
 | 
                        }); 
 | 
                } 
 | 
                else 
 | 
                { 
 | 
                    //允许任意跨域请求 
 | 
                    c.AddPolicy(AppSettings.app(new string[] { "Cors", "PolicyName" }), 
 | 
                        policy => 
 | 
                        { 
 | 
                            policy 
 | 
                            .SetIsOriginAllowed((host) => true) 
 | 
                            .AllowAnyMethod() 
 | 
                            .AllowAnyHeader() 
 | 
                            .AllowCredentials(); 
 | 
                        }); 
 | 
                } 
 | 
  
 | 
            }); 
 | 
        } 
 | 
    } 
 | 
} 
 |