diff --git a/CorsClient/CorsClient/wwwroot/Index.html b/CorsClient/CorsClient/wwwroot/Index.html index d9748c9..26737c1 100644 --- a/CorsClient/CorsClient/wwwroot/Index.html +++ b/CorsClient/CorsClient/wwwroot/Index.html @@ -47,10 +47,10 @@
diff --git a/CorsServer/CorsServer.WebApi31/ApiConst.cs b/CorsServer/CorsServer.WebApi31/ApiConst.cs index a4b16ea..b6084af 100644 --- a/CorsServer/CorsServer.WebApi31/ApiConst.cs +++ b/CorsServer/CorsServer.WebApi31/ApiConst.cs @@ -5,12 +5,10 @@ using System.Threading.Tasks; namespace CorsServer.WebApi31 { - public class ApiConst - { - } - public class CorsPolicyNameConst + public class ApplicationConst { public const string DefaultPolicyName = "AllowAll"; + public const string CorsConfigOptionName = "CorsOption"; } } diff --git a/CorsServer/CorsServer.WebApi31/Controllers/CorsController.cs b/CorsServer/CorsServer.WebApi31/Controllers/CorsController.cs index ed56c88..2d37585 100644 --- a/CorsServer/CorsServer.WebApi31/Controllers/CorsController.cs +++ b/CorsServer/CorsServer.WebApi31/Controllers/CorsController.cs @@ -38,7 +38,7 @@ namespace CorsServer.WebApi31.Controllers [HttpDelete] [HttpPatch] [HttpOptions] - [EnableCors(CorsPolicyNameConst.DefaultPolicyName)] + [EnableCors(ApplicationConst.DefaultPolicyName)] public IActionResult HasCors() { var data = new { Code = 0, Messge = "单独明确可以跨域" }; diff --git a/CorsServer/CorsServer.WebApi31/Properties/launchSettings.json b/CorsServer/CorsServer.WebApi31/Properties/launchSettings.json index c5a4b6a..a7c94aa 100644 --- a/CorsServer/CorsServer.WebApi31/Properties/launchSettings.json +++ b/CorsServer/CorsServer.WebApi31/Properties/launchSettings.json @@ -4,7 +4,7 @@ "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { - "applicationUrl": "http://localhost:40118", + "applicationUrl": "http://localhost:7050", "sslPort": 0 } }, @@ -21,7 +21,7 @@ "commandName": "Project", "launchBrowser": true, "launchUrl": "api/Test/Ping", - "applicationUrl": "http://localhost:5000", + "applicationUrl": "http://localhost:7050", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } diff --git a/CorsServer/CorsServer.WebApi31/Startup.cs b/CorsServer/CorsServer.WebApi31/Startup.cs index acadfba..4f7796a 100644 --- a/CorsServer/CorsServer.WebApi31/Startup.cs +++ b/CorsServer/CorsServer.WebApi31/Startup.cs @@ -26,10 +26,11 @@ namespace CorsServer.WebApi31 public void ConfigureServices(IServiceCollection services) { //Config - services.Configure(Configuration.GetSection("CORS")); + services.Configure (Configuration.GetSection(ApplicationConst.CorsConfigOptionName)); #region CORS - AddCors_Test(services); + AddCors_Config(services); + //AddCors_Test(services); //AddCors_2(services); //AddCors_3(services); //AddCors_4(services); @@ -43,17 +44,49 @@ namespace CorsServer.WebApi31 if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); + //app.UseDatabaseErrorPage(); } + else + { + //app.UseExceptionHandler("/Error"); + //app.UseHsts(); + } + + // app.UseHttpsRedirection(); + + #region ѹͰھ̬ļ + // app.UseResponseCompression(); + // app.UseResponseCaching(); + #endregion - //·ȫַǰ http://www.custom.com/PathBase/ - //app.UsePathBase("/api/"); + // app.UseStaticFiles(); + + // app.UseCookiePolicy(); + + // ·ȫַǰ http://www.custom.com/PathBase/ + // app.UsePathBase("/api/"); app.UseRouting(); - app.UseCors(CorsPolicyNameConst.DefaultPolicyName); + // app.UseRequestLocalization(); + + // UseRouting() UseAuthentication()֮ + // м˳ https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/middleware/?view=aspnetcore-6.0#middleware-order + app.UseCors(ApplicationConst.DefaultPolicyName); + + //app.UseAuthentication(); app.UseAuthorization(); + // Cookieм֮ MVCм֮ǰûỰм + // app.UseSession(); + + // app.UseResponseCompression(); + + // app.UseResponseCaching(); + + //Զм + app.UseEndpoints(endpoints => { endpoints.MapControllers(); @@ -68,7 +101,7 @@ namespace CorsServer.WebApi31 services.AddCors(setup => { var corsOption = services.BuildServiceProvider().GetRequiredService >().Value; - setup.AddPolicy(CorsPolicyNameConst.DefaultPolicyName, build => + setup.AddPolicy(ApplicationConst.DefaultPolicyName, build => { build @@ -120,7 +153,7 @@ namespace CorsServer.WebApi31 { services.AddCors(setup => { - setup.AddPolicy(CorsPolicyNameConst.DefaultPolicyName, build => + setup.AddPolicy(ApplicationConst.DefaultPolicyName, build => { build @@ -171,7 +204,7 @@ namespace CorsServer.WebApi31 { services.AddCors(setup => { - setup.AddPolicy(CorsPolicyNameConst.DefaultPolicyName, build => + setup.AddPolicy(ApplicationConst.DefaultPolicyName, build => { build @@ -209,7 +242,7 @@ namespace CorsServer.WebApi31 { services.AddCors(setup => { - setup.AddPolicy(CorsPolicyNameConst.DefaultPolicyName, build => + setup.AddPolicy(ApplicationConst.DefaultPolicyName, build => { build @@ -243,7 +276,7 @@ namespace CorsServer.WebApi31 { services.AddCors(setup => { - setup.AddPolicy(CorsPolicyNameConst.DefaultPolicyName, build => + setup.AddPolicy(ApplicationConst.DefaultPolicyName, build => { build .AllowAnyOrigin() @@ -261,7 +294,7 @@ namespace CorsServer.WebApi31 services.AddCors(setup => { var corsOption = services.BuildServiceProvider().GetRequiredService >().Value; - setup.AddPolicy(CorsPolicyNameConst.DefaultPolicyName, build => + setup.AddPolicy(ApplicationConst.DefaultPolicyName, build => { build .WithOrigins(corsOption.Origins.ToArray()) @@ -278,7 +311,7 @@ namespace CorsServer.WebApi31 { services.AddCors(setup => { - setup.AddPolicy(CorsPolicyNameConst.DefaultPolicyName, build => + setup.AddPolicy(ApplicationConst.DefaultPolicyName, build => { build.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader().WithExposedHeaders("x-custom-error"); }); @@ -291,7 +324,7 @@ namespace CorsServer.WebApi31 services.AddCors(setup => { var corsOption = services.BuildServiceProvider().GetRequiredService >().Value; - setup.AddPolicy(CorsPolicyNameConst.DefaultPolicyName, builder => + setup.AddPolicy(ApplicationConst.DefaultPolicyName, builder => { builder ////.SetIsOriginAllowedToAllowWildcardSubdomains() @@ -313,7 +346,7 @@ namespace CorsServer.WebApi31 services.AddCors(setup => { var corsOption = services.BuildServiceProvider().GetRequiredService >().Value; - setup.AddPolicy(CorsPolicyNameConst.DefaultPolicyName, builder => + setup.AddPolicy(ApplicationConst.DefaultPolicyName, builder => { if (corsOption.Origins == null) { @@ -337,6 +370,10 @@ namespace CorsServer.WebApi31 { builder.AllowAnyMethod(); } + else if (corsOption.Methods.Contains("*")) + { + builder.AllowAnyMethod(); + } else { builder.WithMethods(corsOption.Methods.ToArray()); @@ -346,6 +383,11 @@ namespace CorsServer.WebApi31 { builder.AllowAnyHeader(); } + + else if (corsOption.Headers.Contains("*")) + { + builder.AllowAnyHeader(); + } else { builder.WithMethods(corsOption.Headers.ToArray()); diff --git a/CorsServer/CorsServer.WebApi31/StartupConfig.cs b/CorsServer/CorsServer.WebApi31/StartupConfig.cs index 805b106..a84d667 100644 --- a/CorsServer/CorsServer.WebApi31/StartupConfig.cs +++ b/CorsServer/CorsServer.WebApi31/StartupConfig.cs @@ -26,7 +26,7 @@ namespace CorsServer.WebApi31 public void ConfigureServices(IServiceCollection services) { //Config - services.Configure (Configuration.GetSection("CORS")); + services.Configure (Configuration.GetSection(ApplicationConst.CorsConfigOptionName)); //Corsļѡ AddCors_Config(services); @@ -43,7 +43,7 @@ namespace CorsServer.WebApi31 app.UseRouting(); - app.UseCors(CorsPolicyNameConst.DefaultPolicyName); + app.UseCors(ApplicationConst.DefaultPolicyName); app.UseAuthorization(); @@ -53,14 +53,12 @@ namespace CorsServer.WebApi31 }); } - #region עͬCors - private IServiceCollection AddCors_Config(IServiceCollection services) { services.AddCors(setup => { var corsOption = services.BuildServiceProvider().GetRequiredService >().Value; - setup.AddPolicy(CorsPolicyNameConst.DefaultPolicyName, builder => + setup.AddPolicy(ApplicationConst.DefaultPolicyName, builder => { if (corsOption.Origins == null) { @@ -121,7 +119,5 @@ namespace CorsServer.WebApi31 return services; } - - #endregion } } diff --git a/CorsServer/CorsServer.WebApi31/StartupDefaultPolicy.cs b/CorsServer/CorsServer.WebApi31/StartupDefaultPolicy.cs index 5070330..bb520bc 100644 --- a/CorsServer/CorsServer.WebApi31/StartupDefaultPolicy.cs +++ b/CorsServer/CorsServer.WebApi31/StartupDefaultPolicy.cs @@ -25,11 +25,20 @@ namespace CorsServer.WebApi31 public void ConfigureServices(IServiceCollection services) { - //config - services.Configure (Configuration.GetSection("CORS")); - - //Cors - AddDefaultCors(services); + //ĬϲCors + services.AddCors(setupCors => + { + //Ĭϲ + setupCors.AddDefaultPolicy(build => + { + build + .AllowAnyOrigin() + .AllowAnyMethod() + .AllowAnyHeader() + .SetPreflightMaxAge(TimeSpan.FromMinutes(10)) + ; + }); + }); services.AddControllers(); } @@ -41,9 +50,6 @@ namespace CorsServer.WebApi31 app.UseDeveloperExceptionPage(); } - //·ȫַǰ http://www.custom.com/PathBase/ - //app.UsePathBase("/api/"); - app.UseRouting(); app.UseCors(); @@ -55,26 +61,5 @@ namespace CorsServer.WebApi31 endpoints.MapControllers(); }); } - - /// - /// ĬϲCors - /// - private IServiceCollection AddDefaultCors(IServiceCollection services) - { - services.AddCors(setupCors => - { - setupCors.AddDefaultPolicy(build => - { - build - .AllowAnyOrigin() - .AllowAnyMethod() - .AllowAnyHeader() - .SetPreflightMaxAge(TimeSpan.FromMinutes(10)) - ; - }); - }); - - return services; - } } } diff --git a/CorsServer/CorsServer.WebApi31/appsettings.json b/CorsServer/CorsServer.WebApi31/appsettings.json index bc33d6e..52d08bb 100644 --- a/CorsServer/CorsServer.WebApi31/appsettings.json +++ b/CorsServer/CorsServer.WebApi31/appsettings.json @@ -1,6 +1,6 @@ { - "urls": "http://*:5000", - "CORS": { + "urls": "http://*:7050", + "CorsOption": { "Origins": ["*"], "Methods": [ "*" ], "Headers": [ "*" ],