|
|
|
@ -26,10 +26,11 @@ namespace CorsServer.WebApi31
|
|
|
|
|
public void ConfigureServices(IServiceCollection services)
|
|
|
|
|
{
|
|
|
|
|
//Config
|
|
|
|
|
services.Configure<CorsOption>(Configuration.GetSection("CORS"));
|
|
|
|
|
services.Configure<CorsOption>(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<IOptionsSnapshot<CorsOption>>().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<IOptionsSnapshot<CorsOption>>().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<IOptionsSnapshot<CorsOption>>().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<IOptionsSnapshot<CorsOption>>().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());
|
|
|
|
|