.net core 跨域总结

1. .Net Core允许跨域

ConfigureServices 设置跨域
 

 services.AddCors(options =>
                {
                    options.AddPolicy(DefaultCorsPolicyName, policy =>
                    {
                        policy
                        .WithOrigins(CorUrls)
                        //.SetIsOriginAllowed(str => true)//开启后允许所有请求
                        .AllowAnyHeader()
                        .AllowAnyMethod()
                        .AllowCredentials();//允许客户端携带验证信息

                    });
}

CorUrls 数组,url不支持(*),另外https也需要单独设置url

SetIsOriginAllowed 开启后貌似允许所有请求

app开启跨域

app.UseRouting();

app.UseCors(DefaultCorsPolicyName);//注意要放在UseRouting和UseAuthentication

app.UseAuthentication();

2.signalR跨域

signalR需要单独设置跨域

            app.UseEndpoints(endpoints =>
            {
                //报警提醒
                endpoints.MapHub<DefaultHub>("/notify/default")
                .RequireCors(configurePolicy =>
                {
                    configurePolicy
                    .WithOrigins(_appConfig.CorUrls)
                    .AllowAnyHeader()
                    .AllowAnyMethod()
                    .AllowCredentials();//允许客户端携带验证信息
                });
            });

.NET Core 中,可以使用中间件来处理请求。下面是一些解决问题的方法: 1. 使用 Microsoft.AspNetCore.Cors 中间件 使用 Microsoft.AspNetCore.Cors 中间件可以轻松地处理请求。首先,您需要将 Microsoft.AspNetCore.Cors 包添加到项目中。然后,在 Startup.cs 文件的 ConfigureServices 方法中添加以下代码: ``` services.AddCors(options => { options.AddPolicy("AllowAll", builder => { builder.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() .AllowCredentials(); }); }); ``` 此代码将创建一个名为“AllowAll”的策略,该策略允许来自任何来源的请求,允许任何 HTTP 方法和任何标头,还允许使用凭据。接下来,在 Startup.cs 文件的 Configure 方法中添加以下代码: ``` app.UseCors("AllowAll"); ``` 此代码将启用请求处理。 2. 使用自定义中间件 您可以编写自己的中间件来处理请求。以下是一个示例中间件: ``` public class CorsMiddleware { private readonly RequestDelegate _next; public CorsMiddleware(RequestDelegate next) { _next = next; } public async Task Invoke(HttpContext context) { context.Response.Headers.Add("Access-Control-Allow-Origin", "*"); context.Response.Headers.Add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS"); context.Response.Headers.Add("Access-Control-Allow-Headers", "Content-Type, Authorization"); if (context.Request.Method == "OPTIONS") { context.Response.StatusCode = 200; return; } await _next.Invoke(context); } } ``` 此中间件将在响应中添加必要的标头,以允许请求。然后,将中间件添加到 Startup.cs 文件的 Configure 方法中: ``` app.UseMiddleware<CorsMiddleware>(); ``` 这将使您的自定义中间件用于处理请求。 这些是解决 .NET Core请求的两种常见方法。您可以根据需要选择其中一种方法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值